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

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

我有一张表,其中有一列unix纪元时间(以秒为单位):1500598288

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

javascript datetime google-apps-script google-sheets epoch
8个回答
202
投票

自 2023 年起,GSheet 引入了新功能,

EPOCHTODATE

=EPOCHTODATE(1500598288)

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

ARRAYFORMULA
(或
BYROW
,如果您倾向于
LAMBDA
):

=ARRAYFORMULA(EPOCHTODATE(A:A))

--- 下面的答案仍然有效,但截至 2023 年已过时 ---

最简单的方法,不需要任何 JS 编程,是通过一个公式,每天除以 86400 秒,然后加上 1970 年 1 月 1 日。例如,下面给出 2017 年 7 月 21 日:

=1500598288 / 86400 + DATE(1970, 1, 1)

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

ARRAYFORMULA
:

=ARRAYFORMULA(A:A / 86400 + DATE(1970, 1, 1))

45
投票

使用 javascript 制作自定义函数日期函数:

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

function FROM_UNIX_EPOCH(epoch_in_secs) {
  return new Date(epoch_in_secs * 1000);  // Convert to milliseconds
}

然后在新专栏中您可以执行以下操作

=FROM_UNIX_EPOCH(A1)


13
投票

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

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


12
投票

现在,距离原来的帖子已经过去了 3 年,你可以......

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

function millisToDate(timeInMillis){
    var yourDateFromMillis = new Date(timeInMillis);
    return yourDateFromMillis;
}

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

=millisToDate(cell here)


8
投票

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

=FLOOR(1500598288/86400)+date(1970,1,1)

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


5
投票

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

=QUOTIENT(A1, 86400) + date(1970, 1, 1) + time(quotient(MOD(A1, 86400), 3600), quotient(mod(A1, 3600), 60), mod(A1, 60))

一些例子:

纪元 日期时间
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

1
投票

在 AppScript 中粘贴此:

function EpocToDate(epoch) {
  //var epoch = 1451606400000; 12/31/2015 19:00:00
  return (Utilities.formatDate(new Date (epoch),'America/New_York','MM/dd/yyyy HH:mm:ss'));
}

在 Google 表格中用作:

=EpocToDate(1451606400000)

如果您必须从另一个单元格引用:

=EpocToDate(VALUE(C2))

-7
投票

ttachala 的答案中给出的公式是不正确的。这是一个更广泛的答案。

我建议不要替换自纪元时间列以来的秒数内的数据。您可能需要它来进行排序等。此外,很难将公式应用于整个列。相反,首先在其旁边插入一个新列。

单击与最上面的纪元单元格相邻的新单元格。假设最上面的纪元单元格是 A1,请将此公式输入到新单元格的公式框中。

=A1/8640000+date(1970,1,1)

日期时间应显示在新单元格中。默认情况下,它只会显示日期而不显示时间。要使其也显示时间,您需要更改单元格格式。选择新的日期单元格后,单击 123 格式下拉菜单并选择所需的单元格格式。

要将此公式应用于列中的所有单元格,请单击日期/时间单元格右下角的黑色小方块(手柄)并将其拖动到列的底部。释放拖动后,列中应填充其相邻纪元数据单元格的日期时间转换。当您分别选择每个单元格时,您可以看到公式中纪元数据单元格索引发生了变化。

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