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)
Mik*_*rge 26
工具>脚本编辑器...>
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)
基于已接受的答案,如果您希望能够比较日期,您将需要使用 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 |
| 归档时间: |
|
| 查看次数: |
41971 次 |
| 最近记录: |