【问题标题】:Google Apps Script _ Convert float to dateGoogle Apps 脚本 _ 将浮点数转换为日期
【发布时间】:2016-08-07 15:50:58
【问题描述】:

我的谷歌电子表格中有一个值为 5/31/2016 0:22:38 的单元格,但是当我编写脚本来获取数据时,它返回 42521.015713761575。我尝试了jquery convert number to date? 中的一些代码,但大多数返回可以追溯到 1970 年。我如何能够将所述浮点数格式化为上面指定的日期?谢谢... :)

【问题讨论】:

标签: javascript google-apps-script google-sheets


【解决方案1】:

这显然是自 1899 年 12 月 30 日 00:00:00 以来经过的天数。

您可以使用以下代码将其转换回 UTC 日期(请注意,月份是从零开始的,因此 12 月 = 11):

var x = 42521.015713761575;

// seconds in day = 24 * 60 * 60 = 86400
var date = new Date(Date.UTC(1899, 11, 30, 0, 0, x * 86400));

console.log(date.toUTCString());

【讨论】:

  • 格林威治标准时间 2016 年 6 月 1 日星期三 16:22:37 是 JSFiddle 上的结果......越来越近了?也许是时区问题? :)
  • @MansonMamaril 我已经更新了我的代码以创建一个 UTC 日期,因此至少每个人都看到了同样的事情。 :-) 我还更新了参考日(1900 年 1 月 1 日前 2 天),使其符合预期结果。但这看起来仍然非常老套和不可靠。我建议寻找专门的方法。 (您确定 Google 没有提供吗?)
  • 我尝试了一个实用程序.formatdate,其中包含来自不同 stackoverflow 的教程,但他们也提供了 1970 年的日期......
  • 我不知道是否有一个实际的函数来返回所写的内容......我使用这个函数sheet.getRange(startingrow, startingcol, lastrow, lastcol).getValues(); 批量获取数据,但当获取日期时只返回浮点数价值...
  • This post 表明 Google 电子表格中的参考时间确实是 1899 年 12 月 30 日 00:00:00。所以看起来我的骇人听闻的答案实际上可能是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多