Bạn hỏi về:
"3:30 chiều tại San Francisco và 7:30 tối tại Dubai"
Nếu tất cả những gì bạn biết là thời gian và vị trí, sau đó bạn có một vấn đề bởi vì không phải tất cả các múi giờ đều là các thực thể cố định. Dubai được sửa ở UTC + 4, nhưng San Francisco thay thế giữa UTC-8 cho Giờ chuẩn Thái Bình Dương và UTC-7 cho Giờ ban ngày Thái Bình Dương. Vì vậy, cần có ngày để thực hiện chuyển đổi này.
Sau đây sẽ cung cấp cho bạn sự khác biệt bằng cách sử dụng hiện ngày theo múi giờ đầu tiên:
TimeZoneInfo tz1 = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
TimeZoneInfo tz2 = TimeZoneInfo.FindSystemTimeZoneById("Arabian Standard Time");
DateTime today = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz1).Date;
DateTime dt1 = new DateTime(today.Year, today.Month, today.Day, 15, 30, 0); // 3:30 PM
DateTime dt2 = new DateTime(today.Year, today.Month, today.Day, 19, 30, 0); // 7:30 PM
TimeSpan elapsed = TimeZoneInfo.ConvertTimeToUtc(dt1, tz1) -
TimeZoneInfo.ConvertTimeToUtc(dt2, tz2);
(Lưu ý rằng ID "Pacific Standard Time"
là định danh múi giờ Windows cho khu Mỹ Thái Bình Dương, và mặc dù tên, bao gồm cả PST và PDT.)
Nhưng ngay cả điều này không nhất thiết phải là cách tiếp cận tốt nhất vì "hôm nay" không giống nhau ở mọi múi giờ. Tại (gần như) bất kỳ thời điểm nào, có hai ngày hoạt động khác nhau trên toàn thế giới. Hình minh họa này from Wikipedia thể hiện tốt điều này.
Có thể ngày "hiện tại" cho múi giờ nguồn là không phải cùng ngày hiện tại trong múi giờ kết thúc. Nếu không có đầu vào bổ sung, không có nhiều bạn có thể làm về điều đó. Bạn cần phải biết ngày được đề cập cho mỗi giá trị.
Nguồn
2014-09-08 17:22:22
Bạn đang tìm định dạng UTC? – danish
Kiểm tra [tại đây] (http://stackoverflow.com/questions/6930489/safely-comparing-local-and-universal-datetimes). – PTwr