2

我正在尝试了解 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 AM} 背后的数学原理是什么,我无法理解。

4

1 回答 1

1

您要求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 前 12 小时(或 14 小时后)的时区不存在(据我所知)。因此,我假设您的示例中有错字。另一个原因可能是日期解析器完全损坏。

但我仍然希望您了解转换背后的数学原理。

于 2018-09-27T21:09:40.450 回答