将本地时间转换为UTC

Mar*_*din 9 .net c# datetime

我反对将日期时间存储为UTC的问题,并且混淆了为什么在更改时区时不会产生相同的结果:

var dt = DateTime.Parse("1/1/2013");
MessageBox.Show(TimeZoneInfo.ConvertTimeToUtc(dt, TimeZoneInfo.Local).ToString());
Run Code Online (Sandbox Code Playgroud)

我在东部和中部之间的机器上手动切换我的本地时区.

中央收益率1/1/2013 6:00:00 AM和东部收益率1/1/2013 5:00:00 AM.我在这里错过了什么?无论时区如何,它们应该是一样的,对吗?

非常感谢提前!

Cha*_*ian 16

我认为你缺少的是DateTime你的DateTime.Parse()陈述所返回的并没有时区.这只是一个可以在任何时区的日期和时间.当你打电话时TimeZoneInfo.ConvertTimeToUtc(dt, TimeZoneInfo.Local),你告诉它它开始的时区.所以如果你从中心开始,你会得到一个答案,而如果你从东部开始,你会得到一个小时前的答案,UTC.实际上,这就是您的代码所显示的内容.


AD.*_*Net 7

有一个类的.ToUniversalTime()方法DateTime