夏季抵消的时区查询

时间:2017-06-24 10:28:55

标签: c# datetime

我有一个小的Windows应用程序,可以在更改日期时间选择器时转换英国,美国和新西兰时区,但我觉得我的代码没有考虑到各种夏季和冬季的偏移。任何帮助将不胜感激。

        TimeZoneInfo nzZone = TimeZoneInfo.FindSystemTimeZoneById("New Zealand Standard Time");
        TimeZoneInfo ukZone = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
        TimeZoneInfo usZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");

        DateTime nzZone1 = TimeZoneInfo.ConvertTime(dateTimePicker1.Value, TimeZoneInfo.Local, nzZone);
        DateTime ukZone1 = TimeZoneInfo.ConvertTime(dateTimePicker1.Value, TimeZoneInfo.Local, ukZone);
        DateTime usZone1 = TimeZoneInfo.ConvertTime(dateTimePicker1.Value, TimeZoneInfo.Local, usZone);

        label4.Text = nzZone1.ToString("dd-MM-yyyy HH:mm");
        label5.Text = ukZone1.ToString("dd-MM-yyyy HH:mm");
        label6.Text = usZone1.ToString("dd-MM-yyyy HH:mm");

1 个答案:

答案 0 :(得分:0)

这没关系。您的疑问与英国和新西兰时区实施日光变化的事实有关。如果您创建另一个未实现日光变化的TimeZoneInfo,您可以看到预期的效果,例如UTC和测试有两个截然不同的日期,分别是1月1日和7月1日。

     TimeZoneInfo utcZone = TimeZoneInfo.FindSystemTimeZoneById("UTC");
     DateTime utcZone1 = TimeZoneInfo.ConvertTime(dateTimePicker1.Value, TimeZoneInfo.Local, utcZone);
     labelutc.Text = utcZone1.ToString("dd-MM-yyyy HH:mm");