码迷,mamicode.com
首页 > 其他好文 > 详细

DateTime如何存储时间

时间:2014-08-19 12:38:44      阅读:432      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   strong   ar   art   问题   

分析问题

  System.DateTime提供了时间的存储和操作。一个DateTime的对象,就表示了某个时间点。.NET小组把DateTime设计成结构,所以DateTime是值类型的。

  和很多其他系统一样,DateTime结构使用一个长正数来存储时间,并且通过只读公共属性Ticks提供访问接口。DateTime所能代表的最小时间是0001年1月1日0时0分0秒,而存储时间的长整数则代表从最小时间到代表时间经过的刻度数(Ticks),其中一个刻度数代表一个毫微秒,所以DateTime的精度就是百毫微秒。从内部来看,存储时间的是一个64位长的长整数,但是DateTime只使用该长整数中的62位来存储时间,而另外两位则用来存储该时间是否是UTC时间的标志,关于UTC时间将在后续章节中有所覆盖,这一点可以从私有属性InternalTicks的代码中得到证实:

private long InternalTicks
{
  get
  {
    //屏蔽了最高的二位,只使用低62位
    return (((long) this.dateData) & 0X3fffffffffffffffL));  
  }    
}

  当程序员操作时间时,需要获得诸如日期、年份等贴近现实世界的时间表示。DateTime结构使用一个名为GetDatePart的方法来转换存储的长整数为真正的时间。诸如Year、Month、Day等公共属性都通过调用GetDatePart方法来得到需要的值。所以,DateTime并不额外地存储年份、月份等数值,所有操作从根本上来说都针对存储的长整数来进行。

答案

  DateTime结构内部存储一个64位长的整数,其中的低62位用来代表时间,它表示从0001年1月1日0时0分0秒开始到表示的时间经过百毫微秒。

 

DateTime如何存储时间,布布扣,bubuko.com

DateTime如何存储时间

标签:style   blog   color   使用   strong   ar   art   问题   

原文地址:http://www.cnblogs.com/wangjinpeng-study/p/3921654.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!