2012-12-28 3 views
1

UTC에서 전화의 현지 시간으로 시간을 변환하려고합니다. 이를 위해 다음을 사용합니다 :WP7 TimeZoneInfo.ConvertTime 올바른 결과를 제공하지 않습니다.

if (progress.ActionDateTime.HasValue) 
        progress.ActionDateTime = TimeZoneInfo.ConvertTime(progress.ActionDateTime.Value, TimeZoneInfo.Local); 

그러나 변환이 완료된 후에도 시간은 정확히 동일하게 유지됩니다. 이 방법은 WP7에서 작동합니까?

+0

시도해보십시오. progress.ActionDateTime.ToLocalTime(); – Mahantesh

+0

그게 작동하는 것, 난 그냥 ConvertTime 함수를 제대로 사용하지 않거나 작동하지 않는 경우 궁금합니다. – Paul

답변

2

A DateTime에 표준 시간대 정보가 저장되지 않습니다. According to the documentation, TimeZoneInfo.ConvertTime 시간 변환 방법을 결정하기 위해 DateTime.Kind 속성을 사용합니다 :

  • DateTimeKind.Local 및 DateTimeKind.Unspecified는 : destinationTimeZone의 시간을 현지 시간으로 변환합니다.
  • DateTimeKind.Utc : UTC (Coordinated Universal Time)를 destinationTimeZone의 시간으로 변환합니다. 당신은 (대상 시간대를 지정하는) 두 번째 매개 변수에 대한 TimeZoneInfo.Local를 사용하고 있기 때문에

, 나는 당신이 DateTimeKind가 로컬 또는 지정되지 않은 중 하나입니다있어 있으리라 믿고있어. 따라서 현지 날짜를 현지 날짜로 변환하는 것이므로 분명히 작동하지 않습니다.

DateTime.ToLocalTime도 DateTimeKind를 사용합니다. According to the documentation:

  • Utc :이 DateTime 인스턴스는 현지 시간으로 변환됩니다.
  • 로컬 : 변환이 수행되지 않습니다.
  • 지정되지 않음 : DateTime의이 인스턴스는 UTC 시간으로 간주되며 Kind가 Utc 인 것처럼 변환됩니다. 기본적으로

, TimeZoneInfo.ConvertTime이 DateTimeKind.Unspecified = 지역이, DateTime.ToLocalTime 그 DateTimeKind.Unspecified = UTC을 고려 것을 고려하면서. 후자가 작동하지 않는 이유는 후자가 왜 작동 하는지를 설명합니다.

관련 문제