2013-03-28 32 views
6

Tôi có quy trình chấp nhận giá trị ngày giờ với múi giờ dưới dạng chuỗi (dữ liệu đến từ hệ thống bên ngoài). Tôi cần dịch thời gian này sang thời gian đã có tại múi giờ của máy cục bộ.Thời gian chuyển đổi từ múi giờ khác với tiết kiệm ánh sáng ban ngày bao gồm

Ví dụ mã:

string cetId = "Central European Standard Time"; 
if (timeZone == "CET") 
{ 
    TimeZoneInfo cetZone = TimeZoneInfo.FindSystemTimeZoneById(cetId); 
    returnDateTime = TimeZoneInfo.ConvertTime(statusDateTime, cetZone, TimeZoneInfo.Local); 
} 
else if (timeZone == "CEST") 
{ 
    TimeZoneInfo cestZone = TimeZoneInfo.FindSystemTimeZoneById(cetId); 
    returnDateTime = TimeZoneInfo.ConvertTime(statusDateTime, cestZone, TimeZoneInfo.Local); 
} 

Tôi có cần phải làm bất cứ điều gì cụ thể nếu thời gian là CEST (trung ương châu Âu thời gian mùa hè) thay vì CET (thời gian trung ương châu Âu) hay không net đối tượng TimeZoneInfo xử lý kịch bản đó?

Trả lời

1

Bạn sẽ ổn thôi.

Bạn đang nói cho ConvertTime cả múi giờ (nguồn và đích) là gì.

Bạn có vấn đề cụ thể với điều này hay bạn chỉ yêu cầu xác nhận?

+0

Tôi chỉ lo ngại rằng thời gian tiết kiệm ánh sáng ban ngày đá ở vào những ngày khác nhau tùy thuộc vào múi giờ và Tôi đã lo lắng rằng thời gian sẽ không dịch đúng cách – Tadhg

0

Từ TimeZoneInfo.ConvertTime()

The value of the Kind property of the dateTime parameter must correspond to the sourceTimeZone parameter, as the following table shows. 

Chỉ muốn thêm mà bạn cần phải xem ra cho các tài sản 'Kind' của StatusDateTime của bạn. Trong trường hợp của bạn, nó sẽ là 'Không xác định'. Kiểm tra phần 'Bình luận'

0

Tôi tạo ra một thư viện một thời gian trở lại để đóng gói các loại biến đổi:

https://github.com/b9chris/TimeZoneInfoLib.Net/blob/master/TimeZoneInfoLib/TimeZone/UtcTimeZone.cs

Có thể hữu ích cho bạn, hoặc bạn chỉ có thể muốn nhặt nó lên để kiểm tra lại mã của bạn. Một trong những thứ mà nó đóng gói là lời cảnh báo của @ Brian - vì vậy nó có các tên phương thức rõ ràng liên quan đến thuộc tính .Kind, mà ném các ngoại lệ hữu ích nếu .Kind là sai. Nó cũng cần một chút công việc grunt ra nhận/common/tên thời gian ban ngày hữu ích và chữ viết tắt:

https://github.com/b9chris/TimeZoneInfoLib.Net/blob/master/TimeZoneInfoLib/TimeZone/TimeZoneShortNameMap.cs

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