Unix 时间截与 Excel 日期的互相转换
  • 首页 > 电脑网络
  • 作者: Joseffu
  • 2008年3月11日 16:00 星期二
  • 浏览:5530 次
  • 字号:   
  • 评论:0 条  
  • 时间:2008-3-11 16:00   浏览:5530  

    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

    如图示:

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

    在线工具://tool.chinaz.com/Tools/unixtime.aspx (2012 编辑)
  • 本文没有标签
    昵称  邮箱  主页 
    表情1 表情2 表情3 表情4 表情5 表情6 表情7 表情8 表情9 表情10 表情11 表情12 表情13 表情14 表情15 表情16 表情17 表情18 表情19 表情20 表情21
    86 + 52 =
    Copyright © 2004-2024  Joseffu Online 博客首页 鲁ICP备2021023008号-1 繁体中文
  • 日志:296 篇
  • 评论:226 条
  • 微语:25 条
  • 友链:18 个
  • 分类:5 个
  • 标签:29 个
  • 建站:2004-11-22

    已运行