C#时间函数
C#提供了很強大的時間函數(shù),本來以為需要調(diào)用winapi來獲取高精度的時間計數(shù),現(xiàn)在發(fā)覺使用c#自帶的就可以完成。
C#基本的時間是使用System.DateTime來獲取,可以獲取當(dāng)前時間DateTime.now,也可以獲取utc時間DateTime.utcNow
Datetime中的ticks屬性十分有用,在msdn上寫著:A single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond
該值可以達(dá)到100納秒的精度,即0.1微妙的精度。
同時也可以通過Datetime.now.toString("yyyy-mm-dd-hh-mm-ss-fffffff");來獲取精度為100納秒的時間。
所以在C#中要獲取當(dāng)前系統(tǒng)時間的秒數(shù)和微秒數(shù)可以使用上述兩種方法。一般都是以1970年1月1日作為起始點。
1.使用ticks獲取100納秒數(shù)
- DateTime begin = new DateTime(1970, 1, 1);
- DateTime now = DateTime.UtcNow;
- long time = now.Ticks - begin.Ticks;//100 nanosecond elapsed since 1970,1,1
- time = time/10;
- int second = time/1000000;
- int microsecond = time - second*1000000;
使用Datetime.utcNow.toString("yyyy-mm-dd-hh-mm-ss-fffffff");
- String t = System.DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffffff");
- String[] timer = t.Split('-');
- long microsecond = Int64.Parse(timer[timer.Length - 1]);
該方法缺點是無法直接獲得秒數(shù)。