从一个时区转换到另一个时区的有关问题
从一个时区转换到另一个时区的问题
public static TimeZoneInfo currentTimezone;
currentTimezone = toolStripComboBox1.SelectedItem as TimeZoneInfo;
DateTime startTime = TimeZoneInfo.ConvertTime(dateTimePickerAlarmTime1.Value, currentTimezone, TimeZoneInfo.Utc);
DateTime endTime = TimeZoneInfo.ConvertTime(dateTimePickerAlarmTime2.Value, currentTimezone, TimeZoneInfo.Utc);
上面的语句为什么要点击dateTimePicker控件设置一下才能通过?
"System.ArgumentException: 无法完成转换,因为所提供 DateTime 的 Kind 属性设置不正确。例如,如果 Kind 属性设置为 DateTimeKind.Local,则源时区必须为 TimeZoneInfo.Local。"
------解决思路----------------------
因为默认dateTimePicker的Value是DateTime.Now,这个值的Kind是Local的,不能把它当作非本地时间来转换。
把它转换成Unspecified的就好了
public static TimeZoneInfo currentTimezone;
currentTimezone = toolStripComboBox1.SelectedItem as TimeZoneInfo;
DateTime startTime = TimeZoneInfo.ConvertTime(dateTimePickerAlarmTime1.Value, currentTimezone, TimeZoneInfo.Utc);
DateTime endTime = TimeZoneInfo.ConvertTime(dateTimePickerAlarmTime2.Value, currentTimezone, TimeZoneInfo.Utc);
上面的语句为什么要点击dateTimePicker控件设置一下才能通过?
"System.ArgumentException: 无法完成转换,因为所提供 DateTime 的 Kind 属性设置不正确。例如,如果 Kind 属性设置为 DateTimeKind.Local,则源时区必须为 TimeZoneInfo.Local。"
------解决思路----------------------
因为默认dateTimePicker的Value是DateTime.Now,这个值的Kind是Local的,不能把它当作非本地时间来转换。
把它转换成Unspecified的就好了
DateTime startTime = TimeZoneInfo.ConvertTime(DateTime.SpecifyKind(dateTimePickerAlarmTime1.Value, DateTimeKind.Unspecified), currentTimezone, TimeZoneInfo.Utc);