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

问题描述 投票:0回答:8

尝试将 1504865618099.00 Unix 时间转换为可读的日期时间。 我试过这个:

=(UNIX + ("1/1/1970"-"1/1/1900"+1)*86400) / 86400

但它不起作用。

excel datetime unix-timestamp date-conversion
8个回答
111
投票
  • 将纪元(Unix 时间)转换为常规时间,如下面的时间戳

    例如:

    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

三个零代表毫秒


51
投票

=A1/(24*60*60) + DATE(1970;1;1)
应该以秒为单位。

=(A1/86400/1000)+25569
如果您的时间以毫秒为单位,那么除以 1000 即可得到正确的日期

不要忘记在输出单元上将类型设置为

Date
。我在这个日期尝试过:
1504865618099
,等于
8-09-17 10:13


37
投票

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/1900 UTC/GMT
。所以 25569 对应于
1/1/1970 00:00 UTC/GMT
,25570 对应于
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)


P.S.:所有这些都已经存在于其他答案和评论中,只是没有按照我喜欢的方式列出,而且我觉得从另一个答案中编辑出来是不可以的。


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

**:例如在这个问题中,自 Unix 纪元以来的数字是

毫秒


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

=((A1/1000+1*3600)/86400+25569)

+1*3600

 是 GTM+1


2
投票
如果以上方法对您不起作用。对我来说,由于某些原因,这并没有发生;

我正在处理的 UNIX 数字来自 Mozilla place.sqlite 日期。

为了使其工作:我将 UNIX 单元格分成两个单元格:前 10 个数字之一(日期)和剩下的 4 个数字(我认为是秒)

然后我使用了这个公式,=(A1/86400)+25569,其中A1包含前10个数字的单元格;它起作用了


1
投票
您看到的日期很可能是

########

,因为根据定义,EPOCH 时间以秒为单位 - 
https://en.wikipedia.org/wiki/Unix_time。这意味着该数字的长度应为 10 个字符。您的号码有 13 个字符(请参阅 1504865618099
),并且很可能以毫秒 (MS) 为单位。为了修正公式,只需将数字除以 1000。请记住,这样您会失去 MS 精度,但在大多数情况下这是可以的。所以最终的公式应该是:

=A1/(86400 * 1000) + DATE(1970,1,1)
    

0
投票
只需对准并拍摄即可。

将 C2 替换为您的手机号码。无需格式化您的 Excel 单元格。
另外,您可以使用这个
unixtimestamp 网站 来验证您的数据。

国际格式(

ISO 8601):

=TEXT(C2/(1000*60*60*24)+25569,"YYYY-MM-DD HH:MM:SS") 2022-10-20 00:04:22 2022-10-20 00:05:20 2022-10-20 00:14:58
美国格式:

=TEXT(C2/(1000*60*60*24)+25569,"MM/DD/YYYY HH:MM:SS") 10/20/2022 00:04:22 10/20/2022 00:05:20 10/20/2022 00:14:58
欧洲格式:

=TEXT(C2/(1000*60*60*24)+25569,"DD.MM.YYYY HH:MM:SS") 20.10.2022 00:04:22 20.10.2022 00:05:20 20.10.2022 00:14:58
如果您只需要日期,请删除“HH:MM:SS”。

=TEXT(C2/(1000*60*60*24)+25569,"YYYY-MM-DD")
    

0
投票
这对我来说适用于指定的 GMT

=((epoch_time_in_ms/1000)+8*3600)/86400 + 25569

其中 +8 是 GMT

例如:

格林尼治标准时间:+8 小时

这决定了是加还是减时间差

我的 GMT 以秒为单位加上 8 小时,那么需要添加 8 x 60 x 60

单元格格式:自定义 > d/m/yyyy hh:mm

epoch_time_in_ms = 1688461727938

最终值 = 4/7/2023 17:17

© www.soinside.com 2019 - 2024. All rights reserved.