How to: Get system up time in C#
Monday, March 17th, 2008I guess this is quite the easy one but the fact is that while I was searching the web for this answer it was very hard to find.
This is something I knew and forgot so it is good that I will have it here for future quick reference.
Just use:
Environment.TickCount
This will return the time in milliseconds that has passed since the last boot.
Quick Note:
I have read here that this might overflow on systems running for a few days, they also give a solution. as I am using this for a Windows Mobile device I don’t have that option. (CF.Net being deprecated and all…)
Hope you found this faster then I did.
Update:
After further looking into this I have found a nice article about how to overcome the overflow problem, here is the solution:
public static TimeSpan GetTimeSinceBoot() { long _newTicks = Convert.ToInt64("0x" + Environment.TickCount.ToString("X"), 16); int days = (int) (_newTicks/(1000*60*60*24)); int hours = (int) ((_newTicks/(1000*60*60)) - (days*24)); int minutes = (int) ((_newTicks/(1000*60)) - (days*24*60) - (hours*60)); int seconds = (int) ((_newTicks/1000) - (days*24*60*60) - (hours*60*60) - (minutes*60)); int milliseconds = (int) (_newTicks - (days*24*60*60*1000) - (hours*60*60*1000) - (minutes*60*1000) - (seconds*1000)); return new TimeSpan(days, hours, minutes, seconds, milliseconds); }
The ticks represent milliseconds and when I just call the constructor for TimeSpan it doesn’t treats it this way, that is why i am doing all of this.
Good luck,
Nadav