在Google表格中将Unix纪元时间转换为日期

Mik*_*rge 44 google-sheets google-apps-script

我有一张带有一列unix纪元时间(以秒为单位)的工作表:1500598288

如何将这些转换为正常日期?

tta*_*ala 70

最简单的方法,不需要任何JS编程,将通过一个公式,除以每天86400秒并添加到1970年1月1日.例如,以下给出2017年7月21日:

=1500598288/86400+date(1970,1,1)
Run Code Online (Sandbox Code Playgroud)

要转换整列数字,只需使用ARRAYFORMULA:

=arrayformula(A:A/86400+date(1970,1,1))
Run Code Online (Sandbox Code Playgroud)

  • 尼斯!反之亦然:`=(B71-date(1970,1,1))*86400` (9认同)
  • 现在是2017年,权力用户的土地Google并不认为有人想在电子表格中将时间戳转换为人类可读日期.我必须生活在错误的宇宙中. (5认同)
  • 这里需要注意的是,如果你想将 Unix 时间戳转换为你自己的时区,你还应该添加 `time(1, 0, 0)` 以转到 UTC+1,或者减去 `time(1, 0, 0)` 转到 UTC-1 等。 (4认同)
  • 另外,Unix 时间是 UTC(协调世界时)。考虑到您的时区,例如,我在旧金山,那就是 (2认同)

Mik*_*rge 26

使用javascript Date函数创建自定义函数:

工具>脚本编辑器...>

function FROM_UNIX_EPOCH(epoch_in_secs) {
  return new Date(epoch_in_secs * 1000);  // Convert to milliseconds
}
Run Code Online (Sandbox Code Playgroud)

然后在新专栏中你可以做到 =FROM_UNIX_EPOCH(A1)


Use*_*sbs 13

在谷歌表格单元格中将纪元时间戳添加到日期时间(GMT 调整)

=A1/86400+日期(1970,1,1)+时间(5,30,0)


emm*_*mby 8

基于已接受的答案,如果您希望能够比较日期,您将需要使用 FLOOR()

=FLOOR(1500598288/86400)+date(1970,1,1)
Run Code Online (Sandbox Code Playgroud)

否则,一个单元格中的“7/21/2017”可能不等于另一单元格中的“7/21/2017”。


小智 5

现在,从原来的帖子 3 年后,您可以制作...

工具 > 脚本编辑器... >

function millisToDate(timeInMillis){
    var yourDateFromMillis = new Date(timeInMillis);
    return yourDateFromMillis;
}
Run Code Online (Sandbox Code Playgroud)

并在单元格中使用您的新功能...

=millisToDate(cell here)


小智 5

在其他很棒的答案的基础上,这是我用来从纪元时间戳获取完整日期时间的方法。使用 Google 表格进行测试。

=QUOTIENT(A1, 86400) + date(1970, 1, 1) + time(quotient(MOD(A1, 86400), 3600), quotient(mod(A1, 3600), 60), mod(A1, 60))
Run Code Online (Sandbox Code Playgroud)

一些例子:

时代 约会时间
0 1970-01-01 0:00:00
61 1970-01-01 0:01:01
3599 1970-01-01 0:59:59
86403 1970-01-02 0:00:03
2678402(=86400*31+2) 1970-02-01 0:00:02
31536008(=86400*365+8) 1971-01-01 0:00:08