时间格式 和 时间戳

一、UTC时间

  时间格式如下:2018-01-22T09:12:43.083Z  或  2013-11-17T11:59:22+08:00   (此处描述不准确:+08:00后结果是北京时间

  其中z 代表是世界协调时间,即:utc

二、GMT时间

  时间格式如下:Thu Oct 16 07:13:48 GMT+08:00 2016

三、Unix时间戳

  在计算机中看到的UTC时间都是从(1970年01月01日 0:00:00)开始计算秒数的。所看到的UTC时间那就是从1970年这个时间点起到具体时间共有多少秒。 这个秒数就是Unix时间戳。

四、本地时间

  UTC时间加上当前时区即为本地时间

  例如:北京当地时间为:UTC时间+08:00

 

五、GMT与UTC的关联

  UTC = GMT +/- 0.9 s    因此 UTC 间中需要进行 "闰秒" 以控制两者相差,在使用过程中如果计算不要求十分精确,可以认为两者等同

 

六、时间戳

  什么是时间戳?是从1970-01-01 00:00:00 到当前时间的所过去的时间的 秒数

  在C#中计算时间戳的方法   (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000

  621355968000000000 是1-1970年之间的天数,当然不包含1970年的日期了

  换算方式如下

  1969*365=718685 天

  每4年润一,但是整百年不润,整400才再润,换算出1-1970年有 1968/4-19+19/4=477个闰年

       中间经历了477个闰年,每个闰年是366天,所以,从1-1970年之间共拥有 719162天 

   那么这中间经历了  719162*24*60*60=62,135,596,800 秒

  再C# 中 Ticks 的单位是100ns,1s=1000ms=1000000um=1000000000ns

  将62,135,596,800 换算成纳秒  62135596800000000000 换算成Ticks 于是得到 621355968000000000

       现在我们理解了为什么用Ticks减去那么大一个数字的意思了吧。     因为Ticks是100ns为单位的,所以 Ticks*100得到ns  /1000得到微妙  /1000得到 毫秒

  Ticks*100/1000,000,000=Ticks/10,000,000  现在最后那个/10 000 000    也不再难以理解了吧

posted @ 2018-07-28 13:37  Myisqq  阅读(3833)  评论(0编辑  收藏  举报