0

私のアプリには、Unixエポックからのミリ秒と現在の時刻を比較する関数があります。

 DateTime.Now

これにより、時間は異なります。つまり、残り2分または残り4分です。

発見された問題は、一部のユーザーが自分の携帯電話に時計を正しく設定していないか、意図的に少し前に進めていないことです。

これにより、上記の計算が正しくなくなります。

これを回避する方法はありますか?誰かから「リアルタイム」を読む。時間の計算は、簡単にするためにサーバー側ではなく電話で行われます。

4

1 に答える 1

6

IMOの問題は、実装ではなく設計です。

ユーザーの時間は、ユーザーの選択、合法(たとえば、ロシアではタイムゾーンと夏時間を定義する法律が数年ごとに変更されるため、政府はまだそこにあることを人々に思い出させる)、技術的(ハードウェアの故障、モバイルオペレーターの機器の誤ったセットアップ)。

修正方法には3つのオプションがあります。

  1. サーバーにDateTimeではなくTimeSpanを返すようにします。

  2. サーバーにクライアントの現在の時刻を取得させ、クライアントの時計でETAを返します。

  3. (最も複雑で、「Solar + Lunar EclipseSchedule」アプリなどの非常に時間に敏感なタスクにのみ必要です)アプリの起動とアクティブ化時に、クライアントのデバイスでのUTC日付と時刻の時間差についてサーバーとネゴシエートします。とサーバーの時計。

于 2013-01-16T23:44:22.977 に答える