Các tài liệu cho các tiểu bang phương pháp NET DateTime.ToLocalTime:DateTime.ToLocalTime trên Windows XP
Trên các hệ thống Windows XP, ToLocalTime phương pháp ghi nhận chỉ có hiện tại quy tắc điều chỉnh khi chuyển đổi từ UTC thành giờ cục bộ. Kết quả là, chuyển đổi cho các khoảng thời gian trước khi quy tắc điều chỉnh hiện tại được đưa vào hiệu ứng có thể không phản ánh chính xác sự khác biệt giữa UTC và giờ địa phương.
Tôi đang phát triển trên Windows 7 nhưng triển khai vào môi trường hỗn hợp. Làm thế nào tôi có thể cung cấp một thực hiện phù hợp, chính xác phù hợp với hành vi Windows 7 của ToLocalTime?
EDIT
Tôi chạy một thử nghiệm:
static void Main()
{
// 8 AM in July, UTC. That would have been DST, so 3 AM CDT.
var dstDate = new DateTime(2010, 7, 1, 8, 0, 0, DateTimeKind.Utc);
// 8 AM in December, UTC. Not DST, so 2 AM CST.
var nonDstDate = new DateTime(2010, 12, 1, 8, 0, 0, DateTimeKind.Utc);
Log("DST Date ToLocalTime: " + dstDate.ToLocalTime());
Log("DST Date ConvertTimeFromUtc: " + ConvertTimeFromUtc(dstDate));
Log("Expected: 3 AM July 1 2010");
Log(string.Empty);
Log("Non-DST Date ToLocalTime: " + nonDstDate.ToLocalTime());
Log("Non-DST Date ConvertTimeFromUtc: " + ConvertTimeFromUtc(nonDstDate));
Log("Expected: 2 AM December 1 2010");
Log(string.Empty);
Log("Date ToLocalTime Kind: " + dstDate.ToLocalTime().Kind);
Log("Date ConvertTimeFromUtc Kind: " + ConvertTimeFromUtc(dstDate).Kind);
}
private static void Log(string message)
{
Console.WriteLine(message);
}
private static DateTime ConvertTimeFromUtc(DateTime utcDateTime)
{
return
DateTime.SpecifyKind(
TimeZoneInfo.ConvertTimeFromUtc(
utcDateTime,
TimeZoneInfo.FindSystemTimeZoneById(TimeZoneInfo.Local.Id)),
DateTimeKind.Local);
}
Kết quả thật giống hệt dưới XP Pro 32-bit, SP3 (như VM) và Windows 7 Enterprise 64-bit:
DST Date ToLocalTime: 7/1/2010 3:00:00 AM DST Date ConvertTimeFromUtc: 7/1/2010 3:00:00 AM Expected: 3 AM July 1 2010 Non-DST Date ToLocalTime: 12/1/2010 2:00:00 AM Non-DST Date ConvertTimeFromUtc: 12/1/2010 2:00:00 AM Expected: 2 AM December 1 2010 Date ToLocalTime Kind: Local Date ConvertTimeFromUtc Kind: Local
Tài liệu có sai không? Tôi có thể gọi ToLocalTime đơn giản không?
EDIT 2
Chúng tôi chạy trên một hệ thống XP thực tế (không phải là một máy ảo) và nhận được kết quả giống hệt nhau đó là tốt. Các trường hợp thử nghiệm của tôi có đúng không? Bất cứ ai có thể cung cấp một trường hợp mà kết quả sẽ khác nhau?
Aargh! Tôi nghĩ rằng họ có nghĩa là "tôi nên áp dụng điều chỉnh DST NGAY BÂY GIỜ" khi họ nói về các quy tắc điều chỉnh. Tôi vừa tìm thấy [link] này (http://www.techrepublic.com/article/what-net-developers-need-to-know-about-daylight-saving-time-changes/6160501) nói rằng bạn đúng . Cảm ơn! – TrueWill