[英]How to calculate the number of seconds between two ISO 8601 datetime in Excel?
我有 2 个 ISO 8601 格式的日期时间字符串,例如1900-01-01 00:00:00+00:00
和2020-03-27 23:59:59+11:00
。 如何仅使用 Excel 或 Excel VBA 计算这 2 个日期时间字符串之间的秒数?
所有的答案,我只碰到过计算日期部分沉绵问题问时间戳。
Function TOUNIX(dt) As Long
TOUNIX = DateDiff("s", "1/1/1970", dt)
End Function
出于理解/教育目的分解:
LEFT(A1,FIND("+",A1)-1)-1
- 提取日期(VALUE(LEFT(A1,FIND("+",A1)-1)-1)
- 将日期转换为数字( -1
表示第一秒为0
)(LEFT(MID(A1,FIND("+",A1)+1,5),2)
- 从时区中提取小时RIGHT(MID(A1,FIND("+",A1)+1,5),2)
- 从时区中提取分钟/60
- 一小时内 60 分钟/24
- 一天 24 小时IF(LEFT(RIGHT(A1,6),1)="-",1,-1)
- 提取时区修饰符以确定时区是从值中增加还是减少* 86400
- 一天的秒数=(VALUE(LEFT(A1,FIND("+",A1)-1)-1)+((LEFT(MID(A1,FIND("+",A1)+1,5),2)+(RIGHT(MID(A1,FIND("+",A1)+1,5),2)/60))/24)*IF(LEFT(RIGHT(A1,6),1)="-",1,-1))*86400
如果您从 0 开始,则不需要从另一个日期中减去。 如果您想这样做,只需根据需要复制公式。
您将需要查看以下功能。
对于文本操作:
对于日期操作:
对于时间操纵:
你有几个选择。 您可以删除每个单独的值并将其放置在适当的日期/时间单独函数中,或者将日期和时间重新排列为可由时间/日期值函数识别的字符串。
Excel 中日期和时间的一些背景知识。 日期存储为整数。 1 代表 1900/1/1,2 代表 1900/1/2,以此类推。 时间以小数形式存储,代表一天的一小部分。 00:00 是午夜并存储为零,中午 12:00 存储为 0.5 表示半天。 24:00 不是正式的 Excel 时间,但某些功能可以使用它。 要测试日期/时间是存储为文本还是 Excel 数字,您可以使用ISTEXT(A1)
类的ISTEXT(A1)
测试单元格的值,将格式更改为常规并查看单元格信息的显示是否发生变化,以及最不可靠的是查看单元格中信息的对齐方式,默认情况下文本左对齐,数字默认右对齐。
让我们假设您的字符串存储在 A1 和 A2
因为 Datevalue 可能有点挑剔,并且有点依赖于系统设置来确定 mm 与 dd,所以我采用剥离单个组件的方法。 在您的情况下,因为所有内容都有前导零,所以可以硬编码月、日、小时、分钟和秒的位置,而不是根据 -、:、+ 和空格等关键字符搜索每个字符串的起始位置。
抓住年份:
=LEFT(A1,4)
抓住月份:
=MID(A1,6,2)
抓住这一天:
=MID(A1,9,2)
通过将结果放入 DATE 来确定日期,如下所示:
=DATE(LEFT(A1,4),MID(A1,6,2),MID(A1,9,2))
抓紧时间:
=MID(A1,12,2)
抓紧时间:
=MID(A1,15,2)
抓住秒:
=MID(A1,18,2)
通过将结果放入 TIME 来计算时间,如下所示:
=TIME(MID(A1,12,2),MID(A1,15,2),MID(A1,18,2))
为了获取时区,我将使用 TIMEVALUE 来演示另一种方法。 这将转换时区时间或十进制值而不是像上面的操作那样的文本。
获取时区:
=TIMEVALUE(RIGHT(A1,5)*IF(LEFT(RIGHT(A1,6))="-",-1,1)
然后,您只需要将结果组合在一起,以 excel 日期和时间格式获取整个内容:
=DATE(LEFT(A1,4),MID(A1,6,2),MID(A1,9,2))+TIME(MID(A1,12,2),MID(A1,15,2),MID(A1,18,2))-TIMEVALUE(RIGHT(A1,5))*IF(LEFT(RIGHT(A1,6))="-",-1,1)
现在字符串已转换为 excel 日期,您需要计算单元格中的差异,注意结果是天数。 然后您需要将其乘以 24*60*60 = 86400 将其转换为秒。
因此,如果您将结果放在 B1 和 B2 中,那么秒差的公式将是:
=(B2-B1)*24*60*60
在下面的例子中是 (F14-F12)。 另请注意,显示时间或日期和时间的单元格已应用自定义格式以显示 24 小时制或日期和时间组合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.