我有一个小的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");
答案 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");