Google 表格单元格中的 ISO-8601 字符串到日期
Posted
技术标签:
【中文标题】Google 表格单元格中的 ISO-8601 字符串到日期【英文标题】:ISO-8601 String to Date in Google Sheets cell 【发布时间】:2015-08-10 03:37:31 【问题描述】:我的工作表的一列中有一堆 ISO-8601 格式的字符串。如何让谷歌表格将它们视为日期,以便我可以对它们进行数学运算(例如,两个单元格之间的分钟差异)?我只试过=Date("2015-05-27T01:15:00.000Z")
,但不高兴。必须有一个简单的方法来做到这一点。有什么建议吗?
【问题讨论】:
我发现正式的 ISO-8601 是 Google 不支持的 one 日期格式有点令人惊讶。 【参考方案1】:要获得可以使用普通数字格式格式化的实际日期值...
=DATEVALUE(MID(A1,1,10)) + TIMEVALUE(MID(A1,12,8))
例如。
A | B | |
---|---|---|
1 | 2016-02-22T05:03:21Z | 2/22/16 5:03:21 AM |
DATEVALUE()
函数将格式化的日期字符串转换为值,TIMEVALUE()
对时间执行相同的操作。在大多数电子表格中,日期和时间由一个数字表示,其中整数部分是自 1900 年 1 月 1 日以来的天数,小数部分是时间的一部分。例如,2009 年 6 月 11 日 17:30 大约是 39975.72917。
上面的公式分别解析日期部分和时间部分,然后将它们相加。
【讨论】:
这个解决方案很好。它比公认的要好。至少这会返回一个数字日期(时间)值,而不是一个字符串。我注意到如果给出了时区偏移量,它就会被忽略。此外,字符串中字符位置的假设使这个解决方案更短,并且可能比几个替换和拆分函数调用更快。 ? 您可以在末尾添加 tz。 ... + (10/24) 其中 10 是偏移量 这个解决方案比公认的要好。它也适用于时区为 +xx:xx 格式的 iso8601,例如:UTC 格式的 2018-08-18T19:11:25+00:00。我想获得的日期时间值具有当前语言环境的时区。就我而言,这不是问题,因为我对计算粗略的统计数据和时间增量更感兴趣。 在 ISO8601 规范推出 31 年后,这仍然是正确答案——但它确实如此!我还需要支持时区——可选的时区,包括分钟偏移量——并最终得到了这个怪物:=DATEVALUE(MID(A1,1,10)) + TIMEVALUE(MID(A1,12,8)) + if(ISNUMBER(VALUE(MID(A1,24,3))), VALUE(MID(A1,24,3))/24, 0) + if(ISNUMBER(VALUE(MID(A1,29,2))), VALUE(MID(A1,29,2))/60/24, 0)
【参考方案2】:
我发现使用=SUM(SPLIT(A2,"TZ"))
更简单
格式化 yyyy-MM-dd HH:mm:ss.000
以再次将日期值视为 ISO-8601。
【讨论】:
这个解决方案还不错。它根据请求返回数字日期(时间)值,而不是接受答案中的字符串。它最适用于 GMT 时间戳,而不是带有时区偏移的时间戳。如果给出了偏移量,则此解决方案使用时间“0”。这个解决方案聪明而简短,虽然不如the other answer 正确,但比许多字符串函数调用要好。 ?【参考方案3】:试试这个
=CONCATENATE(TEXT(INDEX(SPLIT(SUBSTITUTE(A1,"Z",""),"T"),1),"yyyy-mm-dd")," ",TEXT(INDEX(SPLIT(SUBSTITUTE(A1,"Z",""),"T"),2),"hh:mm:ss"))
其中 A1 可以是具有 ISO-8601 格式字符串的单元格,也可以是字符串本身。
【讨论】:
嗯。这看起来并不“容易”,但我会试一试。我真的希望已经有一个功能可以做到这一点。 此解决方案返回一个字符串,而不是 @BobKuhar 想要的 Date 类型。当我使用 ISO 8601 时间字符串2016-07-26T11:12:06.711-0400
对其进行测试时,结果为 2016-07-26 11:12:06.711-0400
。作为 GMT 时间字符串(没有时区偏移),2016-07-26T11:12:06.711Z
变为 2016-07-26 11:12:07
。此解决方案只是重新格式化 ISO 8601 字符串。
您必须拆分结果,将其分解为“2016-07-26”和“11:12:07”。这两个单元格将被格式化为日期和时间。以上是关于Google 表格单元格中的 ISO-8601 字符串到日期的主要内容,如果未能解决你的问题,请参考以下文章
按下单元格中的按钮时从 Google 表格触发 webhook