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

时间:2017-07-21 01:04:01

标签: google-apps-script google-sheets

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

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

6 个答案:

答案 0 :(得分:52)

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

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

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

=arrayformula(A:A/86400+date(1970,1,1))

答案 1 :(得分:19)

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

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

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

然后在新专栏中,您可以=FROM_UNIX_EPOCH(A1)

答案 2 :(得分:5)

现在,从最初的帖子开始 3 年后,您可以制作...

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

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

并在单元格中使用您的新函数...

=millisToDate(cell here)

答案 3 :(得分:4)

将 Epoch Timestamp 添加到 Google 表格单元格中的 DateTime(GMT 调整)

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

答案 4 :(得分:0)

在接受的答案的基础上,如果您希望能够比较日期,则将要使用FLOOR()

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

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

答案 5 :(得分:-2)

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

我建议不要在纪元时间列之后的秒内替换数据。您可能需要它进行分类等。此外,将配方应用于整个色谱柱也很困难。相反,最初在它旁边插入一个新列。

单击最顶层纪元细胞附近的新单元格。假设最上面的纪元单元格是A1,请将此公式输入新单元格的公式框中。

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

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

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