未名Q

此生若能得幸福安稳,谁又愿颠沛流离。

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: 订阅 订阅 :: 管理 ::

image

=TEXT((A2/1000+8*3600)/86400+70*365+19,"yyyy-mm-dd hh:mm:ss.000")

=((B2-70*365-19)*86400-8*3600)*1000

 

什么是时间戳?
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式。

定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。

 

image

Excel里日期、时间字段,实际上是序列值,它以1900-1-0为0,每过一天序列值加1,而时间是小数。

 

(A2/1000+8*3600)/86400+70*365+19 的理解

 

A2/1000:由毫秒转换秒,注意:如果timeStmap是秒,就不用除1000了。

8*3600:由GMT 0时区转到GMT +8时区

86400:由秒转到天(=24*60*60)

70*365:70年的差值(timeStamp与Excel计算起点差异:1900年到1970年)

19:1900年到1970年共是17个闰年,考虑到Excel将1900-1-1当作1,那么公式最后应该加18才对,为什么要加19?这是Excel中的一个bug——1900年也被当作闰年,因此应当再多加一天。另外要注意,在Excel的工具->选项中,有个1904年日期系统,如果勾选这个选项,上面的公式应当将70改为66。

 

在线转换工具:https://tool.lu/timestamp

posted on 2019-09-26 17:41  未名Q  阅读(39656)  评论(2编辑  收藏  举报