39

我有一个包含来自 Java 应用程序的 Unix 纪元时间戳的 Excel 文档。我想看看它们翻译成什么并将它们表示为 Excel 中人类可读的日期。

例如,以下长:1362161251894应评估为可读的内容,例如:2013 年 3 月 1 日 11:07:31,894

我假设我可以为此创建一个公式,但我不确定如何。谢谢!

4

6 回答 6

47

是的,您可以创建一个公式来为您执行此操作。Java 和 Unix/Linux 计算自 1970 年 1 月 1 日以来的毫秒数,而 Microsoft Excel 从 1900 年 1 月 1 日开始计算 Windows,从 1/1/1904 开始计算 Mac OS X。您只需要执行以下操作即可转变:

对于 Windows 上的 GMT 时间

=((x/1000)/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1900"))

Mac OS X 上的 GMT 时间

=((x/1000)/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1904"))

对于 Windows 上的本地时间(将 t 替换为您当前与 GMT 的偏移量)

=(((x/1000)-(t*3600))/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1900"))

对于 Mac OS X 上的本地时间(将 t 替换为您当前与 GMT 的偏移量)

=(((x/1000)-(t*3600))/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1904"))

在您的特定情况下,您似乎处于山区时间(GMT 偏移量为7)。因此,如果我将给定的值1362161251894粘贴到单元格 A1 的新 Excel 电子表格中,然后粘贴以下公式,我会得到 41333.46356 的结果,如果我随后告诉 Excel 格式化为日期(在单元格上按 ctrl+1 ) 是:2013 年 2 月 28 日上午 11:07

=(((A1/1000)-(7*3600))/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1900"))
于 2013-03-01T18:25:59.420 回答
20

这似乎在这里得到了回答

=(A1/86400)+25569

于 2013-03-01T18:20:59.123 回答
4

纪元时间以毫秒 ( 1523060201838) 为单位提供。用户正在寻找转换为 NY 时区(GMT -04:00DST -14400)。

Excel 上的单元格 A1 具有 13 位值纪元时间。

((A1/1000)-14400)/86400 + 25569

转换为4/6/18 8:16 PM(在将单元格格式化为日期之后)。

于 2018-04-06T21:36:03.063 回答
2

我发现最容易记住和阅读的公式是:

在 Excel 中从 Unix/Epoch 时间戳转换为日期(假设时间戳在 A2 中):

=(A2/86400)+DATE(1970,1,1)

这将生成 GMT Excel 时间值。然后,您需要将单元格的格式设置为其中一种日期格式,或者创建您自己的自定义格式。我倾向于使用:

dd-mmm-yy                --> gives 05-Oct-18
dd-mmm-yyyy hh:mm:ss     --> gives 05-Oct-2018 09:45:12

从日期转换为纪元时间戳(假设日期在 A2 中):

=(A2-DATE(1970,1,1))*86400

我发现这个页面很有帮助: Extendoffice excel-timestamp-to-date

注意:如果您需要从GMT(以纽约为例)调整为当地时间,请在末尾添加时差。下面显示了 -5 小时的偏移量。

=(A2/86400)+DATE(1970,1,1)+(-5/24)
于 2018-10-11T16:23:02.213 回答
2

尝试

=(A2/86400)+DATE(1970,1,1)+TIME(5,30,0)

这将有助于当地的时间,比如印度是格林威治标准时间 + 5:30。

于 2021-01-12T08:32:08.763 回答
0

Excel 将天数表示为整数值,将时间表示为小数值。因此,如果从 UNIX 提供自 1970 年 1 月 1 日以来以毫秒为单位的纪元时间,那么我们希望除以一年中的毫秒数,并添加Excel 对 1970 年 1 月 1 日的表示以提供人类可读的 UTC 时间。如果您的值在单元格 A1 中,则 Excel 需要:

=A1/86400/1000+DATEVALUE("1-1-1970")

请注意,如果您的纪元时间以秒为单位而不是毫秒,则可以删除 /1000。要转换为本地时间,其中 't' 是您的本地 UTC 偏移量(如果您有负 UTC 偏移量,请记住使用负值),您可以添加/减去 UTC 偏移量:

=A1/86400/1000+DATEVALUE("1-1-1970")+t/24

请注意,您的 UTC 偏移量可能会根据您所在位置是否采用夏令时而有所不同,因此对于在单个电子表格中显示全年本地时间来说,这是一个不完整的解决方案。

于 2017-02-08T20:42:18.513 回答