2010-03-27 5 views
0

웹 응용 프로그램이 .Net 3.5에서 실행되면 모든 날짜가 사용자 시간이 아닌 UTC 시간에 DB에 저장됩니다. 내가 날짜를 표시 할 때TimeZoneInfo.ConvertTime 문제 : 일광 절약 시간제 스위치가 누락되었습니다

가 나는 괜찮 았는데 지금까지 (UTC)에서 사용자 날짜

//Get the current datetime of the user  exp: GMT TO ISRAEL +2 
    public static DateTime GetUserDateTime(DateTime dateUTC) 
    { 
     string userTzId = "Israel Standard Time"; 
     TimeZoneInfo userTZ = TimeZoneInfo.FindSystemTimeZoneById(userTzId); 

     dateUTC = DateTime.SpecifyKind(dateUTC, DateTimeKind.Utc); 
     DateTime ret = TimeZoneInfo.ConvertTime(dateUTC, TimeZoneInfo.Utc, userTZ); 
     return ret; 
    } 

로 변환하지만 이스라엘의 사용자 (GMT +2)를 가지고 있고, 이스라엘은 일광로 전환 26/3/10에 시간을 절약하므로 이제 (GMT +3)입니다.

어떤 이유로 TimeZoneInfo.ConvertTime은 일광 절약 시간제 스위치가 26/3/10에있는 것을 모르기 때문에 GMT +2로 변환됩니다. (창 UTC 시간 2003 설정)가 잘못된 시간 (+2)를 보여줍니다 서버에

DateTime userdate = GetUserDateTime(DateTime.UtcNow); 
string str2 = "UserDateTime = " + userdate.ToString("dd/MM/yy") + " " + userdate.ToString("HH:mm"); 

:

이상한 것은이 로컬 호스트에서 잘 작동한다는 것입니다, 나는 테스트 페이지를 설정 :

UserDateTime = 27/03/10 올바른 시간 (3)를 보여줍니다 로컬 호스트 (이스라엘 시간으로 설정 윈도우 XP)에 21시 38분

:

UserDateTime = 27/03/10 (22) : 38

이스라엘의 일광 절약 시간제 스위치가 26/3/10에 있었던 TimeZoneInfo를 어떻게 업데이트 할 수 있습니까?

감사합니다.

답변

1

글쎄, 이스라엘은 중요합니다. DST 시작일과 종료일은 매년 Koneset에서 길고 분명한 논쟁 끝에 결정되었습니다. Microsoft가 레지스트리를 업데이트 할 수 있도록 Windows 용 업데이트를 발급해야합니다.

이 컴퓨터에서 수행 되었습니까?

관련 레지스트리 키는 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ 시간 영역 \ 이스라엘 표준시 \ 동적 DST입니다. 거기에 거대한 날짜 목록이 있습니다. 이것은 Vista + Win7 기능입니다. XP에서 어떤 일이 일어날 지 모릅니다. 아마 업데이트가 그것을 처리해야합니다. superuser.com에서 더 궁금한 점을 문의하십시오.

+0

더 이상 같은 문제가있는 국가가 있습니까? – SirMoreno

+0

음, 항상 어딘가에 문제가 있습니다. DST 시간은 정치적 결정이며 태양 주위의 지구 운동에 영향을받지 않습니다. –

0

이스라엘의 하루 기록은 이제 매년 동일합니다. XP는 이스라엘을 처리하기 위해 KB 패치가 필요하지만 Vista와 7은 이와 관련하여 괜찮을 것입니다.

관련 문제