javascript 在Google Sheets中将Unix纪元时间转换为日期

bq9c1y66  于 2023-02-15  发布在  Java
关注(0)|答案(8)|浏览(147)

我有一个工作表,其中有一列unix纪元时间(以秒为单位):1500598288
如何将这些日期转换为正常日期?

jum4pzuy

jum4pzuy1#

截至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))
lsmd5eda

lsmd5eda2#

使用javascript Date function创建自定义函数:
工具〉脚本编辑器...〉

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

然后在一个新的列中,您可以执行=FROM_UNIX_EPOCH(A1)

eqoofvh9

eqoofvh93#

在google工作表单元格中将纪元时间戳添加到日期时间(GMT调整)
=A1/86400+日期(1970,1,1)+时间(5,30,0)

ijnw1ujt

ijnw1ujt4#

现在,3年后从原来的职位,你可以使...
工具〉脚本编辑器...〉

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

利用你在细胞里的新功能。
=millisToDate(cell here)

amrnrhlw

amrnrhlw5#

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

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

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

lvmkulzt

lvmkulzt6#

基于其他一些很棒的答案,下面是我用来从一个纪元时间戳中获取完整日期时间的方法。

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

一些例子:
| 历元|日期时间|
| - ------|- ------|
| 无|1970年1月1日0时00分|
| 六十一|1970年1月1日0时01分01秒|
| 小行星3599|1970年1月1日0时59分59秒|
| 小行星86403|1970年1月2日0时00分03秒|
| 2678402(= 86400 * 31 + 2)|1970年2月1日0时00分02秒|
| 31536008(= 86400 * 365 + 8)|1971年1月1日0时00分08秒|

fjnneemd

fjnneemd7#

在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))
zkure5ic

zkure5ic8#

ttarchala在答案中给出的公式是不正确的,这里有一个更扩展的答案。
我建议不要替换“自纪元以来的秒数”列中的数据。您可能需要它进行排序等。此外,将公式应用到整个列将很困难。相反,最初在它旁边插入一个新列。
单击与最上面的历元单元格相邻的新单元格。假设最上面的历元单元格是A1,则在新单元格的公式框中输入此公式。

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

日期时间应该显示在新单元格中。默认情况下,它只显示日期而不显示时间。要使它也显示时间,您需要更改单元格格式。选中新的日期单元格后,单击123格式下拉菜单并选择所需的单元格格式。
要将此公式应用于列中的所有单元格,请单击日期/时间单元格右下角的黑色小方块(手柄),并将其拖动到列底部。释放拖动后,应使用其相邻历元数据单元格的日期时间转换填充列。单独选择每个单元格时,您可以看到历元数据单元格索引在公式中发生变化。

相关问题