1970.1.1有什么具体含义?C# ticks 是什么?怎么转换为本地时间?

标签:
datetime格林威治1970.1.1ticksit |
分类: 项目之路 |
|
格林威治时间(Greenwich MeanTime,GMT)是位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。是英国的标准时间,也是世界各地时间的参考标准,中国和英国标准时差8个小时,即英国当地时间比中国北京时间晚8个小时。
本初子午线是什么?本初子午线是地球上的零度经线,是为了确定地球经度和全球时刻而采用的标准参考子午线,它不像纬线有自然的起点(赤道)。
问题描述:在对Cyberduck进行开发时,发现一些地方的时间显示有问题(如简介中、下载时、下载完成时的修改时间),如下:
http://s10/mw690/001Tu7jtzy6IQDkVEpj59&690ticks
于是查看源代码(C#语言),发现他们都是从一个long型的值,应该是ticks值,转换为了DateTime。之前我在做Serv-U数据库读取时,也遇到这样类似的问题,这个long值应该就是距某个日期开始的偏移量,Serv-U数据库存的偏移量单位是秒,而Cyberduck调试时,这个值很大,最后得出是毫秒。那么就是这个偏移量转换为DateTime时出了问题,很有可能就是基准错了。
于是我进行了测试:
http://s7/mw690/001Tu7jtzy6IQDI7Rlka6&690ticks
其中转换按钮的代码如下:
2
3
4
5
6
7
这样转换的结果可以看出是以0001年1月1日凌晨为基准的,而一般的计算机时间是从1970年1月1日凌晨为基准的,所以很有可能是这里的问题。于是修改转换按钮的代码:
2
3
4
5
6
7
8
http://s7/mw690/001Tu7jtzy6IQDSKh7M36&690ticks
这样,根据断点调试的Cyberduck中得到的ticks值,可以转换为正常的日期了,如下:
http://s14/mw690/001Tu7jtzy6IQDSLLS5dd&690ticks
另外,有一篇讲DateTime的文章写得很好:http://www.cnblogs.com/artech/archive/2010/09/04/1817833.html
本博客中用到的C#代码插入和高亮借助代码发芽网:
http://fayaa.com/