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纳秒数

 

  1. DateTime begin = new DateTime(1970, 1, 1);  
  2. DateTime now = DateTime.UtcNow;  
  3. long time = now.Ticks - begin.Ticks;//100 nanosecond elapsed since 1970,1,1   
  4. time = time/10;  
  5. int second = time/1000000;  
  6. int microsecond = time - second*1000000;  

 

使用Datetime.utcNow.toString("yyyy-mm-dd-hh-mm-ss-fffffff");  

  1. String t = System.DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ffffff");  
  2.   
  3. String[] timer = t.Split('-');  
  4. long microsecond = Int64.Parse(timer[timer.Length - 1]);  

 

该方法缺点是无法直接获得秒数。