在 Google 表格中将 Unix 纪元时间转换为日期
Posted
技术标签:
【中文标题】在 Google 表格中将 Unix 纪元时间转换为日期【英文标题】:Convert Unix Epoch Time to Date in Google Sheets 【发布时间】:2017-12-26 21:34:06 【问题描述】:我有一张包含 unix 纪元时间列的表格(以秒为单位):1500598288
如何将这些转换为正常日期?
【问题讨论】:
工作表将在哪个时区显示此日期?不同的用户打开它吗? 【参考方案1】:不需要任何 JS 编程的最简单方法是通过一个公式,除以每天 86400 秒并加上 1970 年 1 月 1 日。例如,以下给出 2017 年 7 月 21 日:
=1500598288/86400+date(1970,1,1)
要转换一整列数字,只需使用 ARRAYFORMULA:
=arrayformula(A:A/86400+date(1970,1,1))
【讨论】:
另外,Unix 时间是 UTC(协调世界时)。考虑到您的时区,例如,我在旧金山,它会是 现在是 2017 年,而 Google,超级用户的土地,不认为有人想在电子表格中将时间戳转换为人类可读的日期。我一定是生活在错误的宇宙中。 很好!!反过来是:=(B71-date(1970,1,1))*86400
@Shaardool ,是的,有数据的单元格!
这里需要注意的是,如果您想将 Unix 时间戳转换为您自己的时区,您还应该添加 time(1, 0, 0)
以转到 UTC+1,或减去 time(1, 0, 0)
以转到UTC-1 等【参考方案2】:
使用 javascript Date function 创建自定义函数:
工具 > 脚本编辑器... >
function FROM_UNIX_EPOCH(epoch_in_secs)
return new Date(epoch_in_secs * 1000); // Convert to milliseconds
然后在一个新列中你可以做=FROM_UNIX_EPOCH(A1)
【讨论】:
【参考方案3】:现在,距原始帖子 3 年后,您可以制作...
工具 > 脚本编辑器... >
function millisToDate(timeInMillis)
var yourDateFromMillis = new Date(timeInMillis);
return yourDateFromMillis;
并在单元格中使用您的新功能...
=millisToDate(cell here)
【讨论】:
我经常使用上面的功能。我在这里添加一些奖励项目。 :) 您也可以设置为语言环境时间。例如: function millisToDate(timeInMillis) var yourDateFromMillis = new Date(timeInMillis).toLocaleString('en-US', timeZone: 'Asia/Kolkata' );从Millis返回你的日期;时区在这里。 en.wikipedia.org/wiki/List_of_tz_database_time_zones 这个答案在谷歌表格中有效,而上面的 FROM_UNIX_EPOCH() 没有。【参考方案4】:在谷歌表格单元格中将 Epoch Timestamp 添加到 DateTime(GMT 调整)
=A1/86400+DATE(1970,1,1)+时间(5,30,0)
【讨论】:
简单而且有效。谢谢!!!【参考方案5】:在接受的答案的基础上,如果您希望能够比较日期,您将需要使用 FLOOR()
=FLOOR(1500598288/86400)+date(1970,1,1)
否则,一个单元格中的“7/21/2017”可能不等于另一个单元格中的“7/21/2017”。
【讨论】:
【参考方案6】:在 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】:ttarchala 在答案中给出的公式不正确。这是一个更广泛的答案。
我建议不要替换自纪元以来的秒数列中的数据。您可能需要它进行排序等。此外,将公式应用于整个列将很困难。相反,最初在它旁边插入一个新列。
单击与最顶层 epoch 单元相邻的新单元。假设最上面的纪元单元格是 A1,则将此公式输入到新单元格的公式框中。
=A1/8640000+date(1970,1,1)
日期时间应显示在新单元格中。默认情况下,它只会显示日期而不显示时间。要使其也显示时间,您需要更改单元格格式。选择新的日期单元格后,单击 123 格式下拉菜单并选择所需的单元格格式。
要将此公式应用于列中的所有单元格,请单击日期/时间单元格右下角的黑色小方块(手柄)并将其拖动到列底部。释放拖动后,列应填充其相邻纪元数据单元格的日期时间转换。当您单独选择每个单元格时,您可以看到公式中的纪元数据单元格索引发生了变化。
【讨论】:
你能详细说明我的答案到底哪里不正确吗? 另外,我的答案很容易通过使用 =ARRAYFORMULA() 应用于整个列。 我也担心你的答案不正确——OP要求以秒为单位转换时间,因此时间应除以86,400秒每天。你为什么要告诉 OP 除以 8,640,000?以上是关于在 Google 表格中将 Unix 纪元时间转换为日期的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C 中将 10131520 转换为 Unix 纪元时间?
如何在 kotlin 中将纪元时间戳转换为 unix 十六进制时间戳?
在 xslt 中将 dateTime 转换为 unix 纪元
如何在 Python 中将日期时间对象转换为自纪元(unix 时间)以来的毫秒数?