2009-04-02 5 views
2

왜 여기에 ToUniversalTime 함수가 적용되지 않습니다;.NET 2.0 DateTime UTC 변환

DateTime dt = new DateTime(2009,3,24,1,0,0,DateTimeKind.Local); 
dt = dt.ToUniversalTime(); // convert BST to UTC ? 
dt.ToString(); 

"24/03/2009 01:00:00"... 잘못 되었나요?

는 동일하다 ..

DateTime dt = new DateTime(2009,3,24,1,0,0,DateTimeKind.Utc); 
dt = dt.ToUniversalTime(); // nothing to do, already utc 
dt.ToString(); 

"24/03/2009 1시 0분 0초"... 수정한다.

첫 번째 예제의 ToString() 값을 조정하면 ToUniversalTime()을 호출 할 때 Local으로 지정된 DateTime이 해당 TimeZone 계산이되고 영국에서는 "24/03/2009 00:00:00"이 UTC로 표시되었습니다.

그러나이 방법으로 DateTimeKind를 지정하면 ToUniversalTime 또는 ToLocalTime이 계산을 수행 할 수없는 것처럼 보입니다.

답변

5

혹시 영국에 거주하십니까? 현재 일광 절약 시간제에 있지만 코드에서 지정하는 날짜는 전환되기 전이므로 영국의 현지 시간과 UTC 시간은 동일합니다. 월을 4 월으로 지정하면 1 시간 차이가 나타납니다.

0

환호성 David M. 아침 식사를 제공하지 않았습니다. 사실 BST 여름 시간이 경과 한 날짜로 테스트를 반복하면 그 행동은 정확합니다.

DateTime dt = new DateTime(2009,4,24,1,0,0,DateTimeKind.Local); 
dt = dt.ToUniversalTime(); // convert BST to UTC ? 
dt.ToString(); // "24/04/2009 00:00:00" ... correct 

그리고 확인하려면 ToString() 메서드가 Kind 속성을 기반으로 출력되는 것으로 나타납니다.