[转]使用excel转换Unix时间戳

最近项目立刻就要上线,要导入不少的评论数据,在评论时间这个地方,业务员填写的都是Y-m-d H:i:s格式的,可是存在数据库的都是时间戳格式的 因此。。。
xcel 默认不支持 Unix 格式时间戳,这在导入数据时十分不便。能够用如下公式将时间戳转换成 Excel 格式的时间:
=(x+83600)/86400+70365+19html

其中x为时间戳的单元格,8*3600 中的 8 为中国的时区。而后将公式单元格设置为日期时间格式便可。转换结果以下图:
clipboard.png数据库

这个公式的原理:Excel 的日期其实是序列值,它以 1900-1-1 为 1,每过一天序列值加 1。而 Unix 时间戳是从 1970-1-1 0:00:00 UTC 开始到如今通过的秒数。用 x 表示时间戳,可获得换算公式:
x+83600                    当 前时区的时间(秒)
(x+8
3600)/86400                 转换单位为天
(x+83600)/86400+70365     加上1900到1970这七十年
(x+83600)/86400+70365+19     闰年多出来的天数工具

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

另外要注意,在 Excel 的工具 -> 选项 -> 从新计算中,有个 1904 年日期系统,若是勾选这个选项,上面的公式应当将 70 改成 66,即:
=(x+83600)/86400+70365+19htm

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

我也要得着 Windows 日期转换为 Unix 时间,算术丢了不少年,在纸上划了半天,费了好大工夫,才把上面公式对调了一下,得出 Excel 日期转换为 Unix 时间截的求和公式为:
=(x-19-70365)86400-8*3600ip

如图示:get

clipboard.png

转自 http://blog.sina.com.cn/s/blog_6660f52b0100v36k.htmlclass

相关文章
相关标签/搜索