2008-10-11 67 views
9

Tôi đang làm việc trong C# .net - .Net fx là 2.0 không hỗ trợ chuyển đổi giữa các múi giờ khác nhau. Tôi đã viết một lịch trình dựa trên UTC nhưng nó được đưa ra lỗi trong 1 giờ trong thời gian DTS cho London. Tôi cần một số giải pháp để tôi có thể gat đúng thời gian trong bất kỳ múi giờ liên quan đến UTC với điều chỉnh DST chính xác.Cách chuyển đổi thời gian UTC thành Thời gian ở bất kỳ múi giờ nào khác trong C#

Trả lời

10

Có thay đổi thành .NET 3.5 hoàn toàn không? Nó sẽ làm cho cuộc sống của bạn dễ dàng hơn nhiều. Nếu không, bạn bị mắc kẹt với các lớp TimeZone và DaylightSavings đơn giản, cũng như phải tìm nạp các múi giờ đã biết bằng cách sử dụng P/Invoke.

William Stacey có blog post with some code to do this - nhưng tôi chưa thử, vì vậy không thể đảm bảo tính chính xác của nó. (Theo kinh nghiệm của tôi anh ấy thường khá tốt mặc dù :) Không có nghi ngờ bit tương tự của mã xung quanh nếu một trong đó không giúp bạn.

Tôi tin rằng API mà anh ấy đang sử dụng không có quyền truy cập vào dữ liệu lịch sử, btw. Nói cách khác, nó sẽ giả định rằng DST luôn luôn bắt đầu vào ngày Chủ nhật đầu tiên của tháng 10 (hoặc bất kỳ quy tắc nào) thay vì biết rằng quy tắc đã thay đổi theo thời gian. TimeZoneInfo trong .NET 3.5 hỗ trợ dữ liệu lịch sử nơi hệ điều hành thực hiện.

+0

Đồng ý. Tôi đã nhìn thấy mã cũ làm các công cụ P/Invoke, và TimeZoneInfo trong 3.5 ám nó tất cả đã lỗi thời. –

+0

Cuối cùng tôi đã xoay sở để thay đổi nền tảng thành 3.5. – MSIL

+0

Xin chào Jon, bài đăng blog không có sẵn nữa, câu hỏi ngu ngốc, bạn có biết nơi tôi có thể xem hoặc chỉ cho tôi một nơi nào đó có thể giúp tôi tìm thông tin đó không? –

Các vấn đề liên quan