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

我有从Java应用程序包含Unix纪元时间戳的Excel文档。 我希望看到他们翻译的内容,并将其表示为Excel中的可读date。

例如,以下长: 1362161251894应该评估为可读性如下: 01三月2013 11:07:31,894

我假设我可以为此创build一个公式,但我不知道如何。 谢谢!

是的,你可以创build一个公式为你做这个。 Java和Unix / Linux计算自1970年1月1日以来的毫秒数,而Microsoft Excel从1/1/1900开始计算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上的当地时间(用GMT当前的偏移量replacet)

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

对于Mac OS X上的当地时间(用您当前的GMT偏移量replacet)

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

在你的具体情况下,它看起来像你在一个山区时间(GMT偏移7 )。 所以,如果我将1362161251894的值粘贴到A1单元格的新Excel电子表格中,然后粘贴下面的公式,则得到41333.46356的结果,如果我告诉Excel格式化为Date(按Ctrl + 1单元格)是: 2/28/13 11:07 AM

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

这似乎是在这里回答 ,

=(A1 / 86400)25569

Excel将整个值和时间表示为小数值。 因此,如果从UNIX到UNIX的1-1-1970这个纪元时间是以毫秒为单位的话,那么我们要用一年中的毫秒数除以Excel的表示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偏移量可能会因您的位置是否出现夏令时而有所不同,这使得这是一个在一个电子表格中显示当地时间的不完整解决scheme。