如何在Unix中将Unix纪元时间戳转换为人类可读的日期/时间?

时间:2013-03-01 18:15:28

标签: java excel datetime excel-formula

我的Excel文档包含来自Java应用程序的Unix纪元时间戳。我想看看他们翻译的内容并将其表示为Excel中的人类可读日期。

例如,以下多篇文章: 1362161251894 应评估为类似的内容: 2013年3月1日11:07:31,894

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

6 个答案:

答案 0 :(得分:43)

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

对于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上的本地时间(将当前偏移替换为GMT)

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

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

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

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

=(((A1/1000)-(7*3600))/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1900"))

答案 1 :(得分:20)

This seems to be answered here

  

=(A1 / 86400)25569

答案 2 :(得分:3)

纪元时间以毫秒(1523060201838)提供。 用户希望转换为纽约时区( GMT -04:00 DST -14400 )。

Excel上的单元格A1具有13位数的历元时间。

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

转换为4/6/18 8:16 PM(将格式设置为日期后)。

答案 3 :(得分:0)

Excel将整数值和时间表示为小数值。因此,如果从UNIX到1-1-1970以来以毫秒为单位提供了纪元时间,那么我们希望除以一年中的毫秒数并添加Excel's representation of 1-1-1970以提供人类可读的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偏移量可能会因您所在位置是否观察到夏令时而有所不同,这使得这是一个不完整的解决方案,可以在一个电子表格中显示全年的当地时间。

答案 4 :(得分:0)

我发现最容易记住和理解的公式是:

从Unix / Epoch时间戳转换为Excel中的日期(假设时间戳在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

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

=(A2/86400)+DATE(1970,1,1)+(-5/24)

答案 5 :(得分:0)

试试

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

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