有没有可以被大多数主要电子表格软件自动解析和理解的全局时间戳格式? (但尤其是 Google 表格。)
例如,考虑时间戳“2020-05-08T02:53:03+00:00”。如果我尝试将其粘贴到电子表格中:
1) "2020-05-08T02:53:03+00:00" : not parsed by any major spreadsheet software
2) "2020-05-08T02:53:03Z" : not parsed by any major spreadsheet software
3) "20200508T025303Z" : not parsed by any major spreadsheet software
4) "2020-05-08 02:53:03 GMT" : not parsed by any major spreadsheet software
5) "2020-05-08 02:53:03" : parses; but only correct if user is in GMT/UTC
请注意,我不是用户,我无法自动检测用户的时区,也无法要求他们将电子表格软件重新配置为特定时区。我所能做的就是给他们一个类似于上面的字符串——他们希望将其粘贴到他们的电子表格中并且它“正常工作”。在世界任何地方。
格式必须是人类可读的(没有纪元时间或 Excel 序列号)。用户端脚本只有在爷爷可以处理的情况下才可以接受。爷爷上周刚刚学会了如何复制/粘贴(而且还没有原谅你)。他使用 Excel,如果你说“Google 表格”,他就会朝你扔鞋子。或“脚本”。或“菜单”。 或“奥巴马”。
详细信息:我正在编写一个脚本,它向用户(通过网络、电子邮件等)呈现一个充满时间戳的表格。然后一些用户会将表格复制/粘贴到他们的电子表格软件中,他们会期望该软件能够自动正确解析时间戳,以便将它们转换为用户本地时区,可用于电子表格数学等。当然要求我给他们一种格式,其中时区是不必要的或明确指定的。像大多数编码员一样,我可以轻松地将时间戳转换为任何字符串格式。
咆哮:标准 ISO 8601 格式(上面的示例 1-3)是专门为此目的创建的。所以我很震惊地发现即使是 Google 表格中的 datevalue() 函数也无法解析它们。我的意思是,Google 无法解析 ISO 8601? Google?? 这太令人难以置信了,我需要独立确认。因为我一定错过了什么。必须有 一些 Google 可以解析的全局时间戳格式。
我是说,来吧。现在是 2020 年。而且是 Google。
最佳答案
使用 Google Apps 脚本,您可以使用 formatDate(date, timeZone, format)
解析日期像下面这样:
function myFunction() {
var date = new Date('2020-05-08T02:53:03+00:00');
var formattedDate = Utilities.formatDate(date, "GMT", "yyyy-MM-dd HH:mm:ss");
Logger.log(formattedDate);
}
你还可以通过 getScriptTimeZone()
获取用户的时区.
有了这个,您可以让用户在表格上使用这个脚本,并使用触发器 onOpen() 或 onEdit() 将所有日期重新格式化为他们的区域
关于parsing - Google表格等是否可以解析任何全局时间/日期格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61672166/