컴퓨터에서 (시뮬레이터에서 테스트 할 때) 또는 전화에서 (전화에서 직접 테스트 할 때) 시간대를 변경하면 DateTime.ToLocalTime()
은 업데이트 된 결과를 반환하지 않습니다. .표준 시간대가 변경되면 MonoTouch DateTime.ToLocalTime이 업데이트되지 않음
나는 UIApplication.Notifications.ObserveSignificantTimeChange
에 대한 알림 이벤트를 등록하고 성공적으로 수신합니다. 그것에서 나는 TimeZoneInfo.ClearCachedData()
라고 부르며 실제로 시간대가 변경되었음을 감지 할 수있게하지만 이것은 ToLocalTime()
에 영향을 미치지 않습니다. DateTime
내가 변환 중입니다. Utc (예 : DateTime.UtcNow
시도)입니다.
이 질문에 제안 된대로 CultureInfo.CurrentCulture.ClearCachedData()
을 호출 해 보았습니다. SetTimeZoneInformation does not update DateTime.Now for another .NET Application. CurrentCulture
이 Null로되면 응용 프로그램이 충돌 만 발생합니다.
ToLocalTime()
의 구현을 조금 더 자세히 살펴보면 객체 TimeZone.CurrentTimeZone
을 사용하는 것으로 보입니다. 이 개체는 DateTime.GetNow()
과 TimeZone.timezone_check
의 차이 일 때만 다시 설정됩니다. TimeZoneInfo.ClearCachedData()
을 호출하면 TimeZone.timezone_check
이 업데이트되지 않는 것으로 판단됩니다.
ToLocalTime()
에 시간대 변경을 고려하도록 할 수있는 방법이 있습니까?
좋은 제안이지만 같은 문제가 발생합니다. 'DateTimeOffset.ToLocalTime()'을 호출해도 여전히 업데이트되지 않는'TimeZone.CurrentTimeZone'을 사용합니다. – ysalmi
나는 내 자신의 구현을 조사해야 할 것이다. 이것은 나를 위해 일하고있다. 후프로 돌아 가라. – Jacco
도움 주셔서 감사합니다. 나는 뭔가를 놓친 것 같은 기분이야. 최신 TimeZoneInfo를 사용하는'TimeZoneInfo.ConvertTimeFromUtc (myUTCDate, TimeZoneInfo.Local)'을 시도했지만 결과를 출력 할 때 여전히 잘못된 현지 시간을 얻고 있습니다. – ysalmi