ISO 8601时区应用时机及UTC转换问题咨询
ISO 8601时区规则与时间戳转换解析
嘿,我来给你理清楚这两个问题~
关于ISO 8601的时区处理逻辑
在ISO 8601标准里,时区偏移(比如你例子里的-05:00)是时间戳本身的核心组成部分,不是留给解析者事后手动处理的“附加项”。简单来说,带时区偏移的ISO时间戳从生成那一刻起,就明确指向了一个全球唯一的绝对时间点——时区偏移的作用是直接定义这个时间点和UTC(协调世界时)的时间差,解析程序或用户只需要根据这个偏移来换算成目标时区的时间即可,而不是“手动应用”偏移去修改原始时间。
你的时间戳转换问题:正确结果是UTC 2月1日03:01
你的第二种理解是完全正确的,咱们来拆解一下:
时间戳2010-01-31T22:01:00-05:00里的-05:00,表示这个时间是比UTC晚5小时的时区(比如美国东部标准时间)的当地时间。要转换成UTC的话,因为UTC比这个时区的时间早5小时,所以需要给当地时间加上5小时:22:01 + 5小时 = 27:01,也就是次日的03:01,日期自然从1月31日顺延到2月1日。最终对应的UTC时间就是2010-02-01T03:01:00Z(Z是ISO 8601里代表UTC的标记)。
至于第一种理解的错误点:如果这个时间戳是UTC的22:01,那它应该写成2010-01-31T22:01:00Z,或者如果要表示成-05:00时区的时间,那当地时间应该是2010-01-31T17:01:00-05:00,和你给出的时间戳完全不是一回事。
内容的提问来源于stack exchange,提问作者HalfOfAKebab
相关产品推荐
相关产品推荐

