加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2014-05-13 18:10:32)
标签:

datetime

格林威治

1970.1.1

ticks

it

分类: 项目之路

 

 

格林威治时间(Greenwich MeanTimeGMT)是位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。是英国的标准时间,也是世界各地时间的参考标准,中国和英国标准时差8个小时,即英国当地时间比中国北京时间晚8个小时。

 

本初子午线是什么?本初子午线是地球上的零度经线,是为了确定地球经度和全球时刻而采用的标准参考子午线,它不像纬线有自然的起点(赤道)。

 

问题描述:在对Cyberduck进行开发时,发现一些地方的时间显示有问题(如简介中、下载时、下载完成时的修改时间),如下:

http://s10/mw690/001Tu7jtzy6IQDkVEpj59&690ticks 是什么?怎么转换为本地时间?" TITLE="1970.1.1有什么具体含义?C# ticks 是什么?怎么转换为本地时间?" />

于是查看源代码(C#语言),发现他们都是从一个long型的值,应该是ticks值,转换为了DateTime。之前我在做Serv-U数据库读取时,也遇到这样类似的问题,这个long值应该就是距某个日期开始的偏移量,Serv-U数据库存的偏移量单位是秒,而Cyberduck调试时,这个值很大,最后得出是毫秒。那么就是这个偏移量转换为DateTime时出了问题,很有可能就是基准错了。

 

于是我进行了测试:

http://s7/mw690/001Tu7jtzy6IQDI7Rlka6&690ticks 是什么?怎么转换为本地时间?" TITLE="1970.1.1有什么具体含义?C# ticks 是什么?怎么转换为本地时间?" />

其中转换按钮的代码如下:

private void button1_Click(object sender, EventArgs e)
      {
          long ticks = long.Parse(textBox1.Text);

          DateTime convertTime = new DateTime(ticks);
          textBox2.Text = convertTime.ToString("yyyy-MM-dd HH:mm:ss");
      }
 

这样转换的结果可以看出是以000111日凌晨为基准的,而一般的计算机时间是从197011日凌晨为基准的,所以很有可能是这里的问题。于是修改转换按钮的代码:

private void button1_Click(object sender, EventArgs e)
{
     long ticks = long.Parse(textBox1.Text);
     DateTime dtBase = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
     DateTime convertTime = dtBase.Add(new TimeSpan   (ticks * TimeSpan.TicksPerMillisecond)).ToLocalTime();
           
     textBox2.Text = convertTime.ToString("yyyy-MM-dd HH:mm:ss");
}

 

http://s7/mw690/001Tu7jtzy6IQDSKh7M36&690ticks 是什么?怎么转换为本地时间?" TITLE="1970.1.1有什么具体含义?C# ticks 是什么?怎么转换为本地时间?" />

 

这样,根据断点调试的Cyberduck中得到的ticks值,可以转换为正常的日期了,如下:
http://s14/mw690/001Tu7jtzy6IQDSLLS5dd&690ticks 是什么?怎么转换为本地时间?" TITLE="1970.1.1有什么具体含义?C# ticks 是什么?怎么转换为本地时间?" />

 

另外,有一篇讲DateTime的文章写得很好:http://www.cnblogs.com/artech/archive/2010/09/04/1817833.html

本博客中用到的C#代码插入和高亮借助代码发芽网:

http://fayaa.com/


 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有