2009-06-12 3 views
5

배경 : Windows Mobile 6 장치 (IPAQ 210s)에서 키오스크 모드로 실행되는 .Net 응용 프로그램이 있습니다. Google의 소프트웨어는 실제로 운영 체제와 독립적으로 사용자의 시간대를 추적하므로 UTC의 표준 시간대 조정을 기준으로 표시된 시간을 계산합니다. 많은 사람들이 알 수 있듯이 진정한 키오스크 모드는 Windows Mobile 6에서 달성하기 쉽지 않으며이 앱의 마지막 부분은 OS에서 DST 알림을 표시하지 않습니다.Windows Mobile 6에서 Compact Framework로 시간대 설정

내가 선호하는 솔루션은 DST를 준수하지 않으므로 GMT Casablanca로 설정하는 것이 좋습니다. 그러나 OpenNETCF 라이브러리 사용을 비롯한 최선의 노력에도 불구하고 장치 프로비저닝 프로세스 중에는 시간대를 안정적으로 유지할 수 없다는 것을 발견했습니다. 운영 체제의 날짜/시간 애플릿에서는 처럼 보이지만 시간대는 GMT이지만 시간대는 그 시간대에 맞춰야합니다.

시간대 변경을 제대로 수행하는 방법에 대한 조언을 누구든지 제공 할 수 있습니까? 또는 더 나은 방법은, 누구든지 WinMob 6에서 DST 알림을 해제하는 방법을 알고 있습니까?

답변

1

레지스트리에서 설정할 수 있습니다. HKLM \ Time \ TimeZoneInformation 값을 설정하기 만하면됩니다. pinvoke 할 수있는 기능이 있습니다 : SetTimeZoneInformation.

+1

레지스트리 키는 윈도우 CE 별, 나는 생각합니다. 그러나 p/invoke 호출을 시도 할 것이다. – bjanaszek

+0

레지스트리 키는 Windows Mobile 장치에서도 작동합니다. 나는 그것을 과거에 사용했다. 그러나 pinvoke 아마도 권장되는 솔루션입니다. –

1

시간대를 변경할 때 하나의 오류가 발생했지만 eVC에서는 아직 CF가 아닙니다. 마지막으로 DST에 있던 표준 시간대에서 DST에없는 표준 시간대로 장치의 표준 시간대를 변경하여이 시간대를 결정한 것입니다. 우리가 표준 시간에 있었지만 우리가 일광 절약 시간에 있었을 때 실패했다는 것을 그 달의 달에 정확하게 나타났다. 매우 짜증나.

결국에는 시간대와 시간을 두 번 설정했습니다. 그것은 (일반적으로) 두 번째 수정되었습니다.

0

Windows Mobile 5에서 1 시간 단위로 DST 오류가 발생했습니다. 기기에서 SetSystemTime API 호출을 사용했기 때문에 .NET 관련 문제가 아닌 OS 관련 문제가있는 것 같습니다. 서버의 DateTime.UtcNow 값을 전달합니다 (항상 정확하고 한 시간 정도 걸리지 않았습니다). 모든 장치를 서버와 동일한 시간대로 설정하기로 결정했기 때문에이 문제를 더 이상 추적 할 수 없었습니다. 오류는 서버와 다른 시간대로 설정된 장치에서 시스템 시간을 설정할 때만 발생합니다.

나는 다음 중 하나에 해당하는 의미 광범위한 검색에도 불구하고, 어디서나보고이 문제를 본 적이

:

  1. 대부분의 윈도 모바일 장치 사용자가 수동으로 자신의 시간과 시간대를 설정 때문에이 문제가 제공되지 않습니다 위로
  2. 문제는 일반적으로 OS 관련 문제가 아니라 빌드 관련 문제입니다 (iPAQ에서 본 문제는 있지만 다른 장치에서 문제를 재현하려고 시도했는지 기억하지 못합니다)
  3. 저는 임상 적으로 미친, 그리고 이것은 결코 실제로는 발생하지 않았다.
3

이유가 무엇이든간에 CF는 시작시 실제로 시간대 정보를 캐시합니다 (전체 프레임 워크가 너무 유용하다고 생각합니다). 따라서 시간대를 변경하면 CF는 변경 사항을 인식하지 못합니다. GetSystem/LocalTime API를 사용하면 적절한 시간을 얻을 수 있지만 DateTime.Now에는 변경 사항이 반영되지 않습니다.

I reported this back in 2004.

데스크톱에는 TimezoneInfo.ClearCachedInfo 메서드가 있지만 CF에는 존재하지 않습니다.

관련 문제