đối tượng DateTime có một "Kind" biến giúp TimeZoneInfo biết làm thế nào để đối xử với nó. Trong các MSDN documentation cho TimeZone.ConvertTime nó có những điều sau đây:
DateTimeKind.Local, Chuyển đổi giờ địa phương thành thời gian trong DestinationTimeZone.
DateTimeKind.Utc, Chuyển đổi giờ quốc tế phối hợp (UTC) thành thời gian trong destinationTimeZone.
DateTimeKind.Unspecified, Assumed to Local.
Ví dụ:
Console.WriteLine("Local time zone is '{0}'.", TimeZoneInfo.Local.Id);
var gmTime = new DateTime(2013, 03, 02, 01, 00, 00, DateTimeKind.Utc);
var localTime = new DateTime(2013, 03, 02, 01, 00, 00, DateTimeKind.Local);
var unspecifiedTime = new DateTime(2013, 03, 02, 01, 00, 00);
var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
var gmTimeConverted = TimeZoneInfo.ConvertTime(gmTime, timeZone); // 03/02/2013 8:00:00AM
var localTimeConverted = TimeZoneInfo.ConvertTime(localTime, timeZone); // 03/02/2013
var unspecifiedTimeConverted = TimeZoneInfo.ConvertTime(unspecifiedTime, timeZone);
Console.WriteLine("Converting GMT to EST: {0}", gmTimeConverted);
Console.WriteLine("Converting Local to EST: {0}", localTimeConverted);
Console.WriteLine("Converting Unspecified to EST: {0}", unspecifiedTimeConverted);
Kết quả trong:
Local time zone is 'Pacific Standard Time'.
Converting GMT to EST: 3/1/2013 8:00:00 PM
Converting Local to EST: 3/2/2013 4:00:00 AM
Converting Unspecified to EST: 3/2/2013 4:00:00 AM
Hoặc nếu múi giờ địa phương của bạn là 'Giờ chuẩn Đông' bạn sẽ có được những kết quả
Local time zone is 'Eastern Standard Time'.
Converting GMT to EST: 3/1/2013 8:00:00 PM
Converting Local to EST: 3/2/2013 1:00:00 AM
Converting Unspecified to EST: 3/2/2013 1:00:00 AM
Nếu bạn muốn TimeZoneInfo xử lý 'Không xác định' như Utc, bạn nên hoạt động như TimeZoneInfo.ConvertTimeFromUtc. Một lần nữa từ MSDN documentation
DateTimeKind.Local, Ném một ArgumentException.
DateTimeKind.Unspecified hoặc DateTimeKind.Utc, Chuyển đổi từ Giờ quốc tế phối hợp (UTC).
Bạn có cân nhắc sử dụng thời gian Noda thay thế không? https://code.google.com/p/noda-time/ –
Tôi cũng sẽ đề xuất thời gian noda, tôi cũng đã sử dụng http://www.babiej.demon.nl/Tz4Net/main.htm với thành công – JeremyWeir
@RayCheng Tôi sẽ quay lại. Cảm ơn bạn. –