如标题所述,我在工作表上有Unix时间戳,需要将它们转换为普通的人类可读日期。到目前为止,我很惊人,Google搜索提出了一些建议,但对我来说根本没有用。有人有公式可以将其转换吗?

#1 楼

我更喜欢一个更透明,魔术数字更少的公式。它可以更轻松地查看正在发生的情况,还可以避免出现错误的可能性(例如,该问题的当前最高答案已在1天后关闭):

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


如果您要将其从UTC转换为偏移了几个小时的时间戳,例如UTC-8:

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


请注意,如果您的Unix时间戳以毫秒为单位,您需要先除以1000,即:

=A1/1000/60/60/24 + DATE(1970,1,1) - 8/24


评论


很好,我认为这实际上是一个更好的答案,所以我将除此以外……谢谢!

– JVC
17年12月11日在21:54

是的,这似乎对我不起作用,它输出了一些奇怪的日期。知道为什么吗?

– JayPex
20-2-16在9:31

@JayPex不知道,但是也许您提供了更多详细信息。要检查的一件事是该单元格的格式。

–戴夫L。
20-2-19在18:03

这个公式给我#ERROR,可能是由于混合类型。这一个:= A2 / 60/60/24 + DATEVALUE(“ 1970/1/1”)通过。

– Ignacio Soler Garcia
20 Sep 24'9:01

@IgnacioSolerGarcia对我而言,非常有趣的是,当我不这样做时,您和JayPex遇到了错误。我希望我能重现它。我也明白了您对混合类型的含义,并且不知道Google表格在类型之间进行自动转换所使用的规则。为了进行仔细的转换,我认为这也许是安全的:TO_DATE(A1 / 60/60/24 + N(DATE(1970,1,1)))。它将明确地从日期转换为数字,添加到数字,然后转换回日期。

–戴夫L。
20-09-24在16:04

#2 楼

Google表格会以天为单位测量日期时间,0标记为1899-12-30 0:00:00。这是在1970年之前,此刻的Unix时间戳(假设GMT时间)为负,即-2209161600。因此,公式

=(A1 + 2209161600)/86400


会将A1单元格中的Unix时间戳转换为日期时间(使用这样的公式格式化单元格)。

局限性:


Le秒被忽略
该公式适用于格林尼治标准时间,而Google Sheets时间则在当地时区。要调整时区的公式,请访问https://www.epochconverter.com/并获取当地时间1899-12-30 0:00:00的时间戳。


评论


正如mbican回答的那样,该公式在1天后失效。 xkcd.com/386

–戴夫L。
17年12月11日17:22



答案现已确定。

–戴夫L。
17年12月12日下午4:11

#3 楼

结果对我来说是一天,所以我将其更改为=to_date((A1+2209161600)/86400)

#4 楼

在Google表格中

A1->具有* nix时间戳的单元格

日期公式=(((A1/60)/60)/24)+DATE(1970;1;1)

#5 楼

如果您想将时间戳转换为人类可读日期的最简单方法,请尝试使用此时间戳转换器工具

评论


请注意,该问题与Google表格有关

–科斯
19-09-26在20:08