我在单元格中有一个纪元时间H2
,其值为1517335200000
。我正在尝试将其转换为人类可读的格式,该格式应30/01/2018 6:00:00 PM
在 GMT 中返回。
我尝试使用H2/86400+25569
从 OpenOffice 论坛获得的公式对其进行转换。该公式返回值17587319
。当我将 LibreOffice Calc 中的数字格式更改为 时Date
,它返回 的值06/09/-15484
。这不是我想要的价值。那么,如何获取 dd/mm/yyyy hh:mm:ss 格式的值呢?
答案1
如果H2
包含要变换的数字 ( 1517335200000
)。
使
H3
包含公式:= H2/1000/(60*60*24) + 25569
这将返回数字 43130.75。
将单元格格式更改
H3
为日期。任何一个:- 按Shift- Ctrl-3
- 选择格式-->数字格式-->日期
- 选择格式-->细胞(打开一个窗口)-->数字-日期-格式
将单元格的格式更改
H3
为所需的日期格式:- 选择格式-->细胞(打开一个面板)-->数字-日期-格式(选择一项)
如果宽度不足以显示所需的格式,请扩展单元格的宽度(提示:出现三个 #)。
为什么:
纪元时间以秒为单位,自 1970 年 1 月 1 日起。
Calc 内部时间以自 1899 年 12 月 30 日以来的天数为单位。
因此,要在 H3 中获得正确的结果:
得到正确的数字(最后一个公式):
H3 = H2/(60*60*24) + ( Difference to 1/1/1970 since 12/30/1899 in days ) H3 = H2/86400 + ( DATE (1970,1,1) - DATE(1899,12,30) ) H3 = H2/86400 + 25569
但是您给出的纪元值太大,它比应有的值大了三个零。应该是1517335200而不是1517335200000。它似乎以毫秒为单位给出。因此,除以 1000。经过这一更改,公式得出:
H3 = H2/1000/86400+25569 = 43130.75
H3
更改日期和时间的格式(格式-->单元格-->数字-->日期-->日期和时间),您将看到:01/30/2018 18:00:00
在H3中。
当然,由于 Unix 纪元时间始终基于 UTC(+0 子午线),因此上面的结果需要移动与本地时区距 UTC 的距离一样多的小时数。因此,要获取当地时间,如果时区是太平洋标准时间 GMT-8,我们需要添加 (-8) 小时。 H3 与 H4 中的本地时区 (-8) 的公式为:
H3 = H2/1000/86400 + 25569 + H4/24 = 43130.416666
并呈现为:
01/30/2018 10:00:00
如果H3的格式设置为这样的时间格式。
答案2
以防万一将来有人遇到这种情况。上面的内容没有什么问题,只是我不太理解,所以我换一种方式说,希望对其他人有帮助。
太尔;博士。
公式为
=UnixTime/86400 + 25569
=H2/86400 + 25569
自 libreoffices 以来,日期似乎表示为浮点日时代不及DATE(1899,12,30)
秒。
要将自 1970 年以来的整数秒的 unix 纪元转换为浮点天数,请除以一天中的秒数或 86400。
所以要做转换。
libreoffice datetime = (UnixEpoch / (Seconds in a day 86400)) + the number of days (not seconds) between the epochs.
展示你一路走来获得的价值观的工作示例1675781528 unix epoch (2023-02-07T14:52:08)
1675781528 / 86400 = 19395.619537037 days since 1970
(DATE(1970,1,1) - DATE(1899,12,30)) = 25569 days between 1890 and 1970
25569 + 19395.619537037 = 44964.62 days since 1899