如何在LibreOffice Calc中将单元格纪元时间转换为指定可读格式?
解决OpenOffice中毫秒级纪元时间转GMT可读日期的问题
我来帮你搞定这个转换问题,你之前出错的核心原因是没把13位的毫秒级时间戳先转换成秒,直接用毫秒计算导致日期数值完全偏离了。咱们一步步来解决:
正确的转换公式
首先,你的纪元时间是13位的毫秒值(1517335200000),需要先除以1000转成秒,再转换成OpenOffice的日期序列号。用这个公式:
=H2/1000/86400 + 25569
或者更直观的写法(效果完全一样):
=DATE(1970,1,1) + (H2/1000)/86400
为什么这么写?OpenOffice的日期序列号是以1900年1月1日为起点,而纪元时间(Unix时间戳)是以1970年1月1日GMT为起点,
25569就是这两个日期之间的天数差。把秒数除以86400(一天的秒数),再加上这个天数差,就能得到对应的日期序列号。
设置GMT时区和日期格式
公式输入后,你还需要把单元格格式调整成你要的dd/mm/yyyy hh:mm:ss AM/PM,并且指定时区为GMT:
- 右键这个单元格,选择「格式化单元格」
- 在弹出的窗口中切换到「数字」标签页
- 左侧分类选择「日期」,然后点击「自定义格式」,输入格式代码:
dd/mm/yyyy hh:mm:ss AM/PM - 点击窗口右下角的「选项」按钮,在「时区」下拉菜单里选择「GMT (格林威治标准时间)」
- 依次点击「确定」保存设置
这样就能得到你想要的30/01/2018 6:00:00 PM结果了。
为什么之前的公式出错?
你之前用的H2/86400+25569直接用毫秒除以一天的秒数,得到的数值是1517335200000/86400=17561750,加上25569后是17587319,这个序列号对应的日期是非常久远的历史日期,自然和你要的结果完全不符。
内容的提问来源于stack exchange,提问作者Fazle Rabbi




