C# DateTime字符串的时间部分以及偏移量代表什么时区?
我的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
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偏移量可能会随着当前时间的计算而改变
活动设置
*如果这些规则多次更改,历史偏移量可能不准确,因为实现通常只存储这么多历史