我试图理解为什么我的日期是错误的:
DateTime databaseUtcTime = new DateTime(2016, 8, 15, 10, 20, 0, DateTimeKind.Utc);
var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Central Europe Standard Time");
var testDateTime = TimeZoneInfo.ConvertTimeFromUtc(databaseUtcTime, timeZone);
testDateTime
outputs 2016年8月15日 12:20:00而不是2016年8月15日 11:20:00为什么是这样?难道不应该比 UTC 提前 1 小时,而不是 2 小时吗?
EDIT----
谢谢乔恩·斯基特,
如果这对任何人有帮助,我求助于使用:
if(testDateTime.IsDaylightSavingTime())
{
testDateTime = testDateTime.AddHours(-1);
}
尽管您不了解上下文,但这可能有助于了解如何在按时运行某些显式测试时摆脱夏令时。
ID为“中欧标准时间”的时区只是中欧使用的时区......它并不really意思是标准时间。
由于中欧目前正在实行夏令时,因此偏移量实际上是 UTC+2。
非常不幸的是,Windows 时区中使用的 ID 具有这样的误导性……但是TimeZoneInfo
实施本身是正确的。
(这并不是 Windows 时区名称的全部问题......请参阅马特·约翰逊的 http://codeofmatt.com/2014/04/07/working-with-time-zone-names-in-net/发布有关此事的更多信息...)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)