如何在 Libreoffice calc 中将格式化日期转换为 unix 纪元

问题描述 投票:0回答:2

我的列包含单元格格式日期或时间 (DD.MM.YYYY HH:MM:SS) 和类似值


03.12.2013 14:01:49
04.12.2013 10:19:27
04.12.2013 12:44:56
04.12.2013 14:20:12
04.12.2013 18:30:21
我需要将这些值转换为 unix 纪元(自 1970 年以来的秒数)。不知何故,感觉这些值不被识别为日期,而是被识别为字符串。我尝试了不同的格式,但在没有时间的日期上运气不佳。

date date-formatting libreoffice calc
2个回答
9
投票

如果单元格的格式按照用户在“格式”>“单元格”>“数字”选项卡中定义的

DD.MM.YYYY HH:MM:SS
,则对日期数据执行的操作应该是自动的。

如果您使用标准设置,LibreOffice Calc 将使用

12/30/1899
作为默认日期。所以第一步是获取
12/30/1899
1/1/1970
之间的天数:

=(DATE(1970;1;1) - DATE(1899;12;30)) = 25569

一天的秒数:

=(60 * 60 * 24) = 86400

例如,如果在单元格

A2
中您有日期
03.12.2013 14:01:49
。我减去 Calc 的默认日期和我们刚刚计算的 Unix Epoch 之间的差值,然后乘以一天的秒数:

=(A2 - 25569) * 86400

结果是

1363096909
的值,即以为单位的纪元时间。如果您需要在毫秒内完成,请将方程乘以
1000

如果您经常使用它,您可以创建一个自定义函数来执行此操作。转到“工具”>“宏”>“编辑宏”,然后在出现的模块中输入以下内容:

REM  *****  BASIC  *****

Function EPOCH(date_cell)
EPOCH = (date_cell - 25569)*86400
End Function

关闭宏IDE,现在您可以像使用其他功能一样使用您的

EPOCH()


2
投票

这个公式对我有用,而上面的其他公式则没有:

= DATE( 1970; 1; 1 ) + ( A1 / 86400 )

© www.soinside.com 2019 - 2024. All rights reserved.