C#时间函数
C#提供了很强大的时间函数,本来以为需要调用winapi来获取高精度的时间计数,现在发觉使用c#自带的就可以完成。
C#基本的时间是使用System.DateTime来获取,可以获取当前时间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
该值可以达到100纳秒的精度,即0.1微妙的精度。
同时也可以通过Datetime.now.toString("yyyy-mm-dd-hh-mm-ss-fffffff");来获取精度为100纳秒的时间。
所以在C#中要获取当前系统时间的秒数和微秒数可以使用上述两种方法。一般都是以1970年1月1日作为起始点。
1.使用ticks获取100纳秒数
- 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]);
该方法缺点是无法直接获得秒数。