C# DateTime字符串的时间部分以及偏移量代表什么时区?

C# DateTime字符串的时间部分以及偏移量代表什么时区?,c#,datetime,C#,Datetime,我的DateTime字符串为2020-01-21T16:17:01.2202038-05:00,我想知道16:17:01.2202038代表本地时间还是UTC时间? 如何将本地时间保留为C#?偏移量为-05:00,表示给定的日期和时间(2020-01-21T16:17:01.2202038)比UTC晚5小时。换句话说,就是某个时区的本地时间,在该时间点为UTC-5 这不一定与计算代码的计算机的本地时间相同,也不能保证同一时区的其他时间点的偏移量相同 在.NET中,最好使用DateTimeOffs

我的DateTime字符串为
2020-01-21T16:17:01.2202038-05:00
,我想知道
16:17:01.2202038
代表本地时间还是UTC时间?
如何将本地时间保留为C#?

偏移量为
-05:00
,表示给定的日期和时间(
2020-01-21T16:17:01.2202038
)比UTC晚5小时。换句话说,就是某个时区的本地时间,在该时间点为UTC-5

这不一定与计算代码的计算机的本地时间相同,也不能保证同一时区的其他时间点的偏移量相同

在.NET中,最好使用
DateTimeOffset
类型来表示此类数据,而不是
DateTime
类型

顺便说一下,此格式定义为和规范的一部分。

日期时间值没有TZ偏移数据。它有一个“本地”或“UTC”(或未指定)的标志。请参阅DateTime.Kind属性。在内部,DateTime的实际值是UTC的偏移量,独立于种类存储

如果在将日期时间转换为字符串时显示(非0)TZ,则日期时间表示本地TZ偏移量,TZ本地时间

此TZ偏移量根据实际日期时间值和当前计算机(实际线程)设置实时计算。例如,它将“自动”更改偏移量,这取决于日期是在标准时间还是在夏时制。*由于计算是使用有限的数据(UTC的刻度和标志)完成的,因此TZ在TZ移位时不一定“诚实”:UTC中的绝对时间是正确的,但当前发射的TZ偏移量可能会随着当前时间的计算而改变 活动设置

*如果这些规则多次更改,历史偏移量可能不准确,因为实现通常只存储这么多历史