2009-06-12 18 views
5

背景:Windows Mobile 6デバイス(IPAQ 210s)でキオスクモードで動作する.Netアプリケーションがあります。当社のソフトウェアは実際にはオペレーティングシステムとは独立してユーザーのタイムゾーンを実際に追跡しているため、UTCからのタイムゾーン調整に基づいて表示時間を計算します。多くの人が知っているように、Windows Mobile 6では真のキオスクモードを達成するのは容易ではなく、このアプリケーションのパズルの最後の部分はOSからのDST通知を抑制しています。コンパクトフレームワークでタイムゾーンをWindows Mobile 6に設定

私の好みの解決方法は、DSTを観測しないため、デバイスタイムゾーンをGMT Casablancaに設定することです。私は、OpenNETCFライブラリの使用を含め、私の最善の努力にもかかわらず、デバイスプロビジョニングプロセス中にタイムゾーンを確実に固執させることができないことを発見しました。 OSの日付/時刻アプレットでは、のように見えますが、タイムゾーンはGMTと同じですが、そのタイムゾーンの時刻から1時間ずれています。

タイムゾーンの変更を正しくスティックする方法についてアドバイスをいただけますか?また、WinMob 6でDST通知を無効にする方法を知っている人はいますか?

答えて

1

レジストリで設定できます。 HKLM \ Time \ TimeZoneInformation値を設定するだけです。 ピンボケできる機能もあります:SetTimeZoneInformation

+1

レジストリキーがWindows CE固有のですが、私は信じています。しかし、私はp/invoke呼び出しを試みます。 – bjanaszek

+0

レジストリキーは、Windows Mobileデバイスでも機能します。私は過去にそれを使用しました。しかし、ピンボケはおそらく推奨される解決策です。 –

1

タイムゾーンを変更するとエラーが発生しましたが、eVCではまだCFではありません。最後に、私は、DSTにあったタイムゾーンからDSTにはなかったタイムゾーンにデバイスのタイムゾーンを変更したことが原因であると判断しました。それは、私たちが標準時間にあったが、夏時間になったときには失敗した年の数ヶ月の間、正しく動作するように見えました。とてもうるさい。

最後に、タイムゾーンとタイムを2回設定しました。それは(通常)2回目の修正でした。

0

私はWindows Mobile 5で1時間ごとにDSTエラーが発生しました。この問題は、デバイス上でSetSystemTime API呼び出しを使用していたので、.NET関連ではなくOSに関連しているようですサーバーのDateTime.UtcNowの値(常に正確で、1時間で決してオフにならなかった)を渡します。すべてのデバイスをサーバーと同じタイムゾーンに設定することを決定したので、問題をさらに追跡することはできませんでした。このエラーは、サーバーとは異なるタイムゾーンに設定されたデバイスでシステム時刻を設定した場合にのみ発生しました。

私は、次のいずれかに該当することを意味する、大規模な検索にもかかわらず、どこにも報告されたこの問題を見たことがない

  1. ほとんどのWindows Mobile搭載デバイスユーザーが手動で自分の時間とタイムゾーンを設定するので、この問題が来ることはありません
  2. 問題は一般的にOS特有のものではなく、ビルド固有のものです(私がiPAQで見た問題ですが、別のデバイスで問題を再現しようとすると覚えていません)
  3. 私は臨床的には非常識なことですが、これは決して実際には起こりませんでした。
3

何らかの理由で、CFは起動時に実際にタイムゾーン情報をキャッシュします(私は完全なフレームワークもそうだと思います)。したがって、タイムゾーンを変更すると、CFはその変更を認識しません。 GetSystem/LocalTime APIを使用すると適切な時間が得られますが、DateTime.Nowにはその変更が反映されません。

I reported this back in 2004

デスクトップにはTimezoneInfo.ClearCachedInfoメソッドがありますが、CFには存在しません。

関連する問題