1

C# 3.5 で Windows Mobile 6.5 SDK を使用しています。サーバー(ASP.NET)の日付/時刻でモバイルの日付/時刻を変更する必要があります。何も見つかりません。

更新:タイムゾーンの問題に取り組んでいます。サーバーとクライアントが同じタイムゾーンにある場合、問題はありません。しかし、タイムゾーンが異なる場合、私は問題に直面しています。

4

3 に答える 3

4

モバイルで時刻を変更するのは難しくありません。openNETCF ヘルパーを使用すると簡単に変更できます。

    // Compiling for Windows Mobile
    [DllImport("coredll.dll")]
    static extern bool SetLocalTime(ref SYSTEMTIME time);

    private void SetTime()
    {
        SYSTEMTIME st;

        // Thanks to Jim Hollenhorst <hollenho@attbi.com>
        DateTime trts = DateTime.Now.AddMilliseconds(LocalClockOffset);


        st.year = (short)trts.Year;
        st.month = (short)trts.Month;
        st.dayOfWeek = (short)trts.DayOfWeek;
        st.day = (short)trts.Day;
        st.hour = (short)trts.Hour;
        st.minute = (short)trts.Minute;
        st.second = (short)trts.Second;
        st.milliseconds = (short)trts.Millisecond;

        SetLocalTime(ref st);
    }

SYSTEMTIME は次のとおりです。

    private struct SYSTEMTIME
    {
        public short year;
        public short month;
        public short dayOfWeek;
        public short day;
        public short hour;
        public short minute;
        public short second;
        public short milliseconds;
    }

また、LocalClockOffset は、目的の時刻と現在の時刻の間の事前に計算された差です。

クエリの残りの部分は、サーバーと同期することです。サーバーを同期して time-a.nist.gov と言うと、モバイルも同じサーバーに同期できます。

Valer Bocan には、上記の元になった優れたコードがあります。リンク : http://www.bocan.ro/sntpclient

私はこれを行っていませんが、サーバーをタイムサーバーとしても機能させ、代わりにモバイルをサーバーに向けて同じプロトコルを使用することはおそらく可能ですか?

最後にタイムゾーン - 私の PDA プロジェクトでは、日時を GMT からの +/- オフセットで GMT として渡してきました。

于 2012-10-04T22:29:11.300 に答える
3

私は同じ問題に直面し、OpenNETCF API を使用して解決しました。

まず、ここからダウンロードしてください

同期では、日付を PDA に渡す必要があります。必要に応じて、xml ファイルを使用するか、データベースを使用して日付を設定できます。

プロジェクトの参照で OpenNETCF.WindowsCE.dll を使用して、次のようにします。

OpenNETCF.WindowsCE.DateTimeHelper.SystemTime = 
                new DateTime(2012, 12, 23, 23, 00, 00);

これを行うと、現在の日付が に変更'2012-12-23 23:00:00' されます。このソリューションは 6.1 モバイルでテストしましたが、6.5 でも問題なく動作すると思います。

于 2012-10-04T21:09:54.003 に答える
1

サーバーとデータを処理し、変更を同期する場合は、常に UTC 時間の値を使用し、使用しないでください (ローカル時間の設定が間違っている可能性があります)。

異なるタイムゾーンにある 2 つのモバイルが、おそらく間違った現地時間/タイムゾーンを使用して同じデータを変更するとどうなるか想像してみてください。したがって、常に UTC を使用してください。

第 2 に、Windows モバイル デバイスは、すぐに使用できる時刻同期を既にサポートしています。レジストリにはタイム サーバー エントリがあり、OS はこれを使用して時刻を同期します。次に、携帯電話プロバイダーのデータ (NITZ) を使用して、時刻を同期し、タイムゾーンと現地時間を設定するサービスがあるかもしれません。

〜ジョセフ

于 2012-10-05T04:14:01.750 に答える