在 LibreOffice Calc 中将纪元时间转换为人类可读的时间

在 LibreOffice Calc 中将纪元时间转换为人类可读的时间

我在单元格中有一个纪元时间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)。

  1. 使H3包含公式:

    = H2/1000/(60*60*24) + 25569

    这将返回数字 43130.75。

  2. 将单元格格式更改H3为日期。任何一个:

    • Shift- Ctrl-3
    • 选择格式-->数字格式-->日期
    • 选择格式-->细胞(打开一个窗口)-->数字-日期-格式
  3. 将单元格的格式更改H3为所需的日期格式:

    • 选择格式-->细胞(打开一个面板)-->数字-日期-格式(选择一项)
  4. 如果宽度不足以显示所需的格式,请扩展单元格的宽度(提示:出现三个 #)。


为什么:

纪元时间以秒为单位,自 1970 年 1 月 1 日起。
Calc 内部时间以自 1899 年 12 月 30 日以来的天数为单位。
因此,要在 H3 中获得正确的结果:

  1. 得到正确的数字(最后一个公式):

    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
    
  2. 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

相关内容