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

Bry*_*yce 39 java excel datetime excel-formula

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

例如,以下long:1362161251894应评估为类似于:2013年3月1日11:07:31,894

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

111*_*01b 43

是的,您可以创建一个公式来为您执行此操作.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"))
Run Code Online (Sandbox Code Playgroud)

对于Mac OS X上的GMT时间

=((x/1000)/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1904"))
Run Code Online (Sandbox Code Playgroud)

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

=(((x/1000)-(t*3600))/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1900"))
Run Code Online (Sandbox Code Playgroud)

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

=(((x/1000)-(t*3600))/86400)+(DATEVALUE("1-1-1970") - DATEVALUE("1-1-1904"))
Run Code Online (Sandbox Code Playgroud)

在您的具体情况下,您看起来像是在山区时间(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"))
Run Code Online (Sandbox Code Playgroud)

  • 我读得太快,没有意识到这是几毫秒.如果您的时间戳以秒为单位,请确保在"x"之后删除`/ 1000`. (4认同)
  • 对于我在 Excel for Mac 2011 上,当我离开`- DATEVALUE("1-1-1904")` 时它可以工作 (2认同)
  • 奇怪.为什么1485190688881会转换为1/22而不是1/23?基于五小时的抵消. (2认同)

Fre*_*eit 20

这似乎在这里得到解答,

=(A1/86400)25569

  • 如果您在纪元时间戳上将毫秒转换为秒,则此方法有效.要使其正常工作毫秒,您应该执行:=(A1/86400000)+25569并记住这不考虑时区. (11认同)

小智 5

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

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

((A1/1000)-14400)/86400 + 25569
Run Code Online (Sandbox Code Playgroud)

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