如何将服务器返回的美国时间转换为用户本地时间DateTime
?5/1/2012 3:38:27 PM
我正在为 Windows 手机开发。
我试过了
DateTime localTime = serverTime.ToLocalTime();
但结果是几个小时。我认为ToLocalTime()
会负责转换到用户所在的任何时区?也许我需要先获取用户的时区信息?
编辑 1
我认为 serverTime 在 PST 时区
编辑 2
我的时区是 GMT +8。我尝试了以下方法,但结果 localTime 落后了 15 小时。
TimeZoneInfo localZone = TimeZoneInfo.Local;
DateTime localTime = TimeZoneInfo.ConvertTime(serverTime, localZone);
编辑 3
这导致我当地时间晚了 7 个小时。
TimeZoneInfo localZone = TimeZoneInfo.Local;
DateTime dateTimeKind = DateTime.SpecifyKind(serverTime, DateTimeKind.Utc);
DateTime localTime = TimeZoneInfo.ConvertTime(dateTimeKind, localZone);
编辑 4
好的,我想我到了那里,但不确定这是否适用于所有时区。我认为我仍然必须考虑夏令时,因为由此产生的当地时间现在只提前一小时。
TimeZoneInfo localZone = TimeZoneInfo.Local;
double offset = localZone.GetUtcOffset(DateTime.Now).TotalHours;
DateTime dateTimeKind = DateTime.SpecifyKind(serverTime, DateTimeKind.Utc);
DateTime localTime = TimeZoneInfo.ConvertTime(dateTimeKind, localZone).AddHours(offset);
但是,您如何获得DLS
对 Windows Phone 中特定时区有效的信息?TimeZoneInfo.FindSystemTimeZoneById
好像不支持?