欢迎光临
我们一直在努力

Unix 数字时间截与 Excel 日期的互相转换

Excel 默认不支持 Unix 格式时间戳,这在导入数据时十分不便。可以用以下公式将时间戳转换成 Excel 格式的时间:

=(x+8*3600)/86400+70*365+19

其中x为时间戳的单元格,8*3600 中的 8 为中国的时区。然后将公式单元格设置为日期时间格式即可。转换结果如下图:

点击在新窗口中浏览此图片

这个公式的原理:Excel 的日期实际上是序列值,它以 1900-1-1 为 1,每过一天序列值加 1。而 Unix 时间戳是从 1970-1-1 0:00:00 UTC 开始到现在经过的秒数。用 x 表示时间戳,可得到换算公式:

x+8*3600                    当 前时区的时间(秒)
(x+8*3600)/86400                 转换单位为天
(x+8*3600)/86400+70*365     加上1900到1970这七十年
(x+8*3600)/86400+70*365+19     闰年多出来的天数

细心的 话会发现,1900 年到 1970 年共是 17 个闰年,考虑到 Excel 将 1900-1-1 当作 1,那么公式最后应该加 18 才对,为什么要加19?这是 Excel 中的一个 Bug —— 1900 年也被当作闰年,因此应当再多加一天。

另外要注意,在 Excel 的工具 -> 选项 -> 重新计算中,有个 1904 年日期系统,如果勾选这个选项,上面的公式应当将 70 改为 66,即:

=(x+8*3600)/86400+70*365+19

转换后的日期为当 日的零时零分零秒。

我也要得着 Windows 日期转换为 Unix 时间,算术丢了很多年,在纸上划了半天,费了好大工夫,才把上面公式对调了一下,得出 Excel 日期转换为 Unix 时间截的求和公式为:

=(x-19-70*365)*86400-8*3600

如图示:

点击在新窗口中浏览此图片

记之以备用。

http://joseffu.gorgor.org/read.php?163
赞(0) 打赏
未经允许不得转载:刘旭的人个博客 » Unix 数字时间截与 Excel 日期的互相转换
分享到: 更多 (0)
标签:

评论 抢沙发

评论前必须登录!

 

QQ :13945502电话:13913571631

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

×
订阅图标按钮