【发布时间】:2015-11-07 01:48:33
【问题描述】:
或者这甚至可能吗?
作为一个附带问题,这个问题对我来说存在的原因是要了解当用户在运行时更改 Windows 文化设置时 DateTime 对象会发生什么?
【问题讨论】:
-
什么意思?
DateTime值没有文化。如果根据特定的文化对其进行格式化,则不再有DateTime值。你有一个string值。自然地,string值没有报告用于创建它们的文化的机制。您必须单独存储文化信息。你到底在这里问的是什么? -
我可以看到我的问题有点不清楚,对此感到抱歉。那么 DateTime 对象总是被假定为本地时间吗?我只是不明白为什么 date.ToLocalTime().ToLocalTime() 只更改一次值?
-
DateTime.SpecifyKind 允许您指定它是本地或 UTC。 ToLocalTime() 会将 UTC 时间转换为本地时间。
-
所以我实际上在运行时测试了它会改变的方式,似乎为了让它根据系统时间获取一个新的 LocalTime 以进行正确的转换,你必须实例化一个新的DateTime 对象,以便 DateTime 对象可以在创建时获取系统的属性。不过,这并没有经过彻底测试,只是我从非常粗略的粗略测试中获得的快速结果。我删除了我的答案,因为我的发现与它相矛盾。
-
PS 使用
DateTimeOffset,在很多方面都更好。
标签: c# datetime cultureinfo