Datetime ISO 8601日期时间理解

Datetime ISO 8601日期时间理解,datetime,iso8601,Datetime,Iso8601,我试图理解ISO8601格式的日期读数,但找不到一个好的文件来阅读 如果我的代码中有这样的时间“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}的背后

我试图理解ISO8601格式的日期读数,但找不到一个好的文件来阅读

如果我的代码中有这样的时间“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}的背后的数学是什么?我无法理解这一点。

您要求的是
2018-08-18T00:00:00+1000
后面的数学显示为
8/17/2018 7:00:00 AM

首先,
2018年8月17日上午7:00:00
只是显示日期和时间的另一种格式。转换为ISO 8601字符串后,它将如下所示:
2018-08-17T07:00:00

2018-08-18T00:00:00+1000
末尾的
+1000
表示为时区偏移。您可以在2018年8月18日UTC加上10小时内读取该字符串。因此它将与
2018-08-18T10:00:00Z
相同

因此,我们的UTC日期为2018年8月18日上午10点,显示为2018年8月17日上午7点的区域设置日期。这意味着您所在的时区比UTC晚27小时

UTC之前(或之后)超过12小时的时区不存在(据我所知)。因此,我假设您的示例中有一个输入错误。另一个原因可能是完全损坏了日期解析器


但我仍然希望你能掌握转换背后的数学知识。

+1000最后表示UTC+10小时零分钟。你应该看看有关ISO8601的内容。关于转换我不知道,可能是c#?我相信这样的问题已经被回答过很多次了。谢谢Joakim,我是在阅读了维基的页面后提出这个问题的,它没有多大帮助。据我所知,UTC+10小时,但这是否意味着日期是当地时间还是UTC?另外,是的,这是c代码,+10特别是在代码运行时没有意义,它会使时间延迟几个小时。。。从2018年8月18日到2018年8月17日上午7点,显然不是+10差异。
+1000
表示它位于UTC+10小时的时区,如果您不在该时区,则在转换和使用当地时间时,您将获得不同的时间值。这是一个棘手的问题,很容易出错,根据您对日期的处理方式,可能最容易先将其转换为UTC,然后再转换为本地时区。无论如何,如果你想在实际转换中获得更多帮助,你应该在这个问题上加上
c
。非常感谢Jelhan在这方面的帮助。是的,我明白这一点,这正是为什么我感到困惑的原因,它怎么能追溯到27小时前???没有像那样的时区,代码仍然不断地返回给我。我能想到的唯一原因是,从内部来说,这是在做一些没有意义的数学。有没有可能把2018年8月18日作为当地的一天,然后进行一些转换。但这正是c#code返回的内容,我无法理解它。