通过excel将unix时间转换为日期时间

Joh*_*ith 29 excel datetime date-conversion unix-timestamp

试图将1504865618099.00 Unix时间转换为可读日期时间.我试过这个:

=(UNIX + ("1/1/1970"-"1/1/1900"+1)*86400) / 86400
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

Rav*_*ati 32

  • 将纪元(Unix-Time)转换为常规时间,如下面的时间戳

    例如: 1517577336206

  • 首先使用以下函数转换值,如下所示

    =LEFT(A1,10) & "." & RIGHT(A1,3)

  • 输出如下

    例如: 1517577336.206

  • 现在添加如下公式

    =(((B1/60)/60)/24)+DATE(1970,1,1)

  • 现在格式化下面的单元格或所需的格式(自定义格式)

    m/d/yyyy h:mm:ss.000

现在示例时间到了

2/2/2018 13:15:36.206

三个零是毫秒

  • 当你可以``=A1/1000```时,为什么要使用``左````和````右````? (5认同)

Pim*_*Pim 13

=A1/(24*60*60) + DATE(1970;1;1)应该用几秒钟.你的时间以毫秒为单位,因此除以1000就会使用正确的日期(比如=(A1/86400/1000)+25569不要忘记Date在输出单元格上设置类型.我用这个日期尝试了它:1504865618099等于8-09-17 10:13.

  • 这对我有用,但仅当我用逗号替换 DATE 函数中的分号时。 (3认同)
  • @StevenRands Excel在公式中使用分号还是逗号取决于区域设置。在大多数欧洲国家/地区,它是分号,对于世界上大多数其他国家/地区来说,它是逗号。您可以在Windows设置中更改此设置。 (2认同)

nde*_*mou 12

TLDR

=(A1/86400)+25569

...并且单元格格式应该是日期。

如果它不适合你

  • 如果您得到一个数字,则您忘记将输出单元格格式化为日期。
  • 如果你得到#####你可能没有真正的 Unix 时间。在https://www.epochconverter.com/ 中检查您的时间戳。尝试将您的输入除以 10、100、1000 或 10000**
  • 您使用超出 Excel(非常扩展)限制的时间戳。
  • 您没有替换A1为包含时间戳的单元格;-p

解释

Unix 系统将时间点表示为数字。特别是自称为 Unix 纪元的零时间以来的秒数*,即1/1/1970 00:00 UTC/GMT. 这个秒数被称为"Unix 时间戳""Unix 时间""POSIX 时间"或只是"时间戳"有时(令人困惑地)"Unix 纪元"

在 Excel 的情况下,他们选择了不同的零时间和步骤(因为谁不喜欢技术细节的多样性?)。所以 Excel 很重要,days因为24 hours before 1/1/0000 UTC/GMT. 所以 25569 对应于1/1/1970 00:00 UTC/GMT25570 2/1/1970 00:00

现在请注意,我们每天有 86400 秒(24 小时 x60 分钟,每 x60 秒),您可以理解这个公式的作用:A1/86400将秒转换为天,并+25569调整 Unix 的时间零和时间之间的偏移量- Excel 为零。

顺便说DATE(1970,1,1)一句,如果您忘记了所有这些,将有助于为您返回 25569,因此编写我们的公式的一种更“自我记录”的方式是:

=A1/(24*60*60) + DATE(1970,1,1)

PS:所有这些都已经出现在其他答案和评论中,只是没有按照我喜欢的方式排列,我觉得编辑另一个答案是不行的。


*:这几乎是正确的,因为你不应该计算闰秒

**:例如,在这个问题的情况下,数字是自 Unix 时代以来的毫秒数。


小智 7

如果您有########,它可以帮助您:

=((A1/1000+1*3600)/86400+25569)
Run Code Online (Sandbox Code Playgroud)

+1*3600是 GTM+1