Как да конвертирате UTC времето във време във всяка друга часова зона в C#

Работя в C#.net - .Net fx е 2.0, който не поддържа конвертиране между различни часови зони. Написах планировчик, базиран на UTC, но той дава грешки от 1 час в DTS периодите за Лондон. Имам нужда от някакво решение, за да мога да получа правилното време във всяка часова зона спрямо UTC с правилни корекции на DST.


person MSIL    schedule 11.10.2008    source източник


Отговори (1)


Изключено ли е преминаването към .NET 3.5? Това би направило живота ви много, много по-лесен. В противен случай ще останете с обикновените класове TimeZone и DaylightSavings, както и ще трябва да извличате известните часови зони с помощта на P/Invoke.

Уилям Стейси има публикация в блог с някакъв код за това - но не съм го пробвал, така че не мога да гарантирам за неговата точност. (Според моя опит той обикновено е доста добър обаче :) Без съмнение има подобни части от код, ако този не ви помогне.

Вярвам, че API, който той използва, няма достъп до исторически данни, между другото. С други думи, ще приеме, че лятното часово време винаги започва в първата неделя на октомври (или каквото и да е правилото), вместо да знае, че правилото се е променило с времето. TimeZoneInfo в .NET 3.5 поддържа исторически данни там, където го прави операционната система.

person Jon Skeet    schedule 11.10.2008
comment
Съгласен. Виждал съм стар код, който прави нещата P/Invoke, и TimeZoneInfo в 3.5 го прави остарял. - person Robert Paulson; 11.10.2008
comment
Здравей Джон, публикацията в блога вече не е достъпна, глупав въпрос, знаеш ли къде мога да търся или да ме насочи някъде, което може да ми помогне да намеря тази информация? - person 1800 INFORMATION; 23.05.2014