我有一个包含来自 Java 应用程序的 Unix 纪元时间戳的 Excel 文档。我想看看它们翻译成什么并将它们表示为 Excel 中人类可读的日期。
例如,以下长:1362161251894应评估为可读的内容,例如:2013 年 3 月 1 日 11:07:31,894
我假设我可以为此创建一个公式,但我不确定如何。谢谢!
我有一个包含来自 Java 应用程序的 Unix 纪元时间戳的 Excel 文档。我想看看它们翻译成什么并将它们表示为 Excel 中人类可读的日期。
例如,以下长:1362161251894应评估为可读的内容,例如:2013 年 3 月 1 日 11:07:31,894
我假设我可以为此创建一个公式,但我不确定如何。谢谢!
是的,您可以创建一个公式来为您执行此操作。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"))
=(A1/86400)+25569
纪元时间以毫秒 ( 1523060201838
) 为单位提供。用户正在寻找转换为 NY 时区(GMT -04:00或DST -14400)。
Excel 上的单元格 A1 具有 13 位值纪元时间。
((A1/1000)-14400)/86400 + 25569
转换为4/6/18 8:16 PM
(在将单元格格式化为日期之后)。
我发现最容易记住和阅读的公式是:
在 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)
尝试
=(A2/86400)+DATE(1970,1,1)+TIME(5,30,0)
这将有助于当地的时间,比如印度是格林威治标准时间 + 5:30。
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 偏移量可能会根据您所在位置是否采用夏令时而有所不同,因此对于在单个电子表格中显示全年本地时间来说,这是一个不完整的解决方案。