C#TimeZoneInfo.ConvertTime结果不正确

时间:2018-05-29 17:38:02

标签: c# .net

我正在尝试在两个时区之间转换时间,并发现美国东部标准时间到西欧时间之间的一小时差异 据推测,美国东部标准时间(EST)2018年6月18日下午1点应该是西欧时间(WET)当天下午6点,但c#ConvertTime的结果是晚上7点,我想我错过了日光设置的东西? 无论如何,这是代码:

var str = "2018-07-09T13:00:00";
var dt = Convert.ToDateTime(str);
var SourceZoneValue = "Eastern Standard Time";
var DestinationZoneValue = "W. Europe Standard Time";


TimeZoneInfo sourceTimeZone = TimeZoneInfo.FindSystemTimeZoneById(SourceZoneValue);
TimeZoneInfo destinationTimeZone = TimeZoneInfo.FindSystemTimeZoneById(DestinationZoneValue);

DateTime localTime = TimeZoneInfo.ConvertTime(dt, sourceTimeZone, destinationTimeZone);
Console.WriteLine(localTime);

结果是晚上7点而不是下午6点,任何想法? TKS

1 个答案:

答案 0 :(得分:1)

您想要将东部标准时间转换为 W。欧洲标准时间,从纽约阿姆斯特丹

纽约时区为-5 GMT,阿姆斯特丹时区为+1 GMT:

enter image description here

  • 纽约夏令时于2018年3月11日开始,将于2018年11月4日结束。
  • 阿姆斯特丹夏令时于2018年3月25日开始,将于2018年10月28日结束。

您的日期是6月18日,因此夏令时不会影响时差,我会说7 PM是正确的结果。

也许W. Europe Standard Time不是您正在寻找的正确时区?例如,在英国时间:

var britishZone = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");