我正在尝试理解ISO 8601格式的日期读取,并且找不到很好的文档来读取。
如果我的代码中有时间,例如“ 2018-08-18T00:00:00 + 1000”,这是本地时间还是UTC时间? 当我使用Convert.ToDateTime(“ 2018-08-18T00:00:00 + 1000”)进行转换时,将获得以下日期时间{8/17/2018 7:00:00 AM}。我不确定这是UTC日期时间还是本地时间?
“ 2018-08-18T00:00:00 + 1000”转换为{8/17/2018 7:00:00}背后的数学是什么,我无法解决这个问题。
答案 0 :(得分:0)
您正在要求2018-08-18T00:00:00+1000
后面的数学运算显示为8/17/2018 7:00:00 AM
。
首先8/17/2018 7:00:00 AM
只是显示日期和时间的另一种格式。转换为ISO 8601字符串后,其外观应为:2018-08-17T07:00:00
。
+1000
表示法结尾处的 2018-08-18T00:00:00+1000
是时区偏移量。您可以将该字符串读取为 UTC 2018年8月18日加上十个小时。因此,它将与2018-08-18T10:00:00Z
相同。
因此,我们的UTC日期为2018年8月18日上午10点,显示为区域设置日期为2018年8月17日上午7点。这意味着您所在的时区比UTC晚27小时。
在UTC之前(或之后14个小时)超过12小时的时区不存在(据我所知)。因此,我假设您的示例中有错字。另一个原因可能是日期解析器完全损坏。
但我仍然希望您能掌握转换背后的数学原理。