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

Pav*_*oba 5 date calc date-formatting libreoffice

我有包含单元格格式日期或时间 (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 年以来的秒数)。不知何故,感觉这些值不被识别为日期,而是作为字符串。我尝试了不同的格式,没有时间的日期运气不好。

Sen*_*esh 5

如果单元格的格式设置为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
Run Code Online (Sandbox Code Playgroud)

一天中的秒数:

=(60 * 60 * 24) = 86400
Run Code Online (Sandbox Code Playgroud)

例如,如果在单元格中A2有日期03.12.2013 14:01:49。我减去 Calc 的默认日期和我们刚刚计算的 Unix Epoch 之间的差异,然后乘以一天中的秒数:

=(A2 - 25569) * 86400
Run Code Online (Sandbox Code Playgroud)

结果是一个1363096909为单位的纪元时间值。如果您需要以毫秒为单位,请将等式乘以1000

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

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

Function EPOCH(date_cell)
EPOCH = (date_cell - 25569)*86400
End Function
Run Code Online (Sandbox Code Playgroud)

关闭宏IDE,现在您可以EPOCH()像其他任何功能一样使用您的!