当我们转换UTC日期时间ToUniversalTime会发生什么?

时间:2016-04-20 09:21:40

标签: c# .net

我们将UTC日期时间转换为ToUniversalTime会发生什么?

DateTime localDate = DateTime.Now.AddMinute(offsetTimeZone);                        
DateTime todayStart = localDate.Date.ToUniversalTime().AddHours(00).AddMinutes(00); 

3 个答案:

答案 0 :(得分:0)

使用ToUniversalTime进行转换时会有一个时间段。 DST是解决的,当地时间等等。

只需转到参考源并阅读代码: http://referencesource.microsoft.com/#mscorlib/system/datetime.cs,fddce8be2da82dfc

答案 1 :(得分:0)

stackoverflow上已存在相同的问题。

  

这里没有附加到DateTime对象的隐式时区。如果在其上运行ToUniversalTime(),它将使用运行代码的上下文的时区。

     

例如,如果我从1970年1月1日的纪元创建一个DateTime,无论我在世界的哪个地方,它都会给我相同的DateTime对象。

     

如果我在格林威治运行代码时运行ToUniversalTime(),那么我会得到相同的时间。如果我在温哥华居住的时候这样做,那么我得到一个-8小时的偏移DateTime对象。

     

这就是为什么在您需要进行任何类型的日期转换或本地化时,将时间相关信息作为UTC时间存储在数据库中的重要性。考虑您的代码库是否已移至另一个时区的服务器设施;)

您可以找到问题和完整答案here

答案 2 :(得分:0)

默认情况下,DateTime对象的类型为DateTimeKind.Local。在解析日期并将其设置为DateTimeKind.Utc时,ToUniversalTime()不执行任何转换。如果我们运行ToUniversalTime(),它将使用运行代码的上下文的时区。

相关问题