C# 3.5 で Windows Mobile 6.5 SDK を使用しています。サーバー(ASP.NET)の日付/時刻でモバイルの日付/時刻を変更する必要があります。何も見つかりません。
更新:タイムゾーンの問題に取り組んでいます。サーバーとクライアントが同じタイムゾーンにある場合、問題はありません。しかし、タイムゾーンが異なる場合、私は問題に直面しています。
C# 3.5 で Windows Mobile 6.5 SDK を使用しています。サーバー(ASP.NET)の日付/時刻でモバイルの日付/時刻を変更する必要があります。何も見つかりません。
更新:タイムゾーンの問題に取り組んでいます。サーバーとクライアントが同じタイムゾーンにある場合、問題はありません。しかし、タイムゾーンが異なる場合、私は問題に直面しています。
モバイルで時刻を変更するのは難しくありません。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 として渡してきました。
私は同じ問題に直面し、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 でも問題なく動作すると思います。
サーバーとデータを処理し、変更を同期する場合は、常に UTC 時間の値を使用し、使用しないでください (ローカル時間の設定が間違っている可能性があります)。
異なるタイムゾーンにある 2 つのモバイルが、おそらく間違った現地時間/タイムゾーンを使用して同じデータを変更するとどうなるか想像してみてください。したがって、常に UTC を使用してください。
第 2 に、Windows モバイル デバイスは、すぐに使用できる時刻同期を既にサポートしています。レジストリにはタイム サーバー エントリがあり、OS はこれを使用して時刻を同期します。次に、携帯電話プロバイダーのデータ (NITZ) を使用して、時刻を同期し、タイムゾーンと現地時間を設定するサービスがあるかもしれません。
〜ジョセフ