私のアプリには、Unixエポックからのミリ秒と現在の時刻を比較する関数があります。
DateTime.Now
これにより、時間は異なります。つまり、残り2分または残り4分です。
発見された問題は、一部のユーザーが自分の携帯電話に時計を正しく設定していないか、意図的に少し前に進めていないことです。
これにより、上記の計算が正しくなくなります。
これを回避する方法はありますか?誰かから「リアルタイム」を読む。時間の計算は、簡単にするためにサーバー側ではなく電話で行われます。
私のアプリには、Unixエポックからのミリ秒と現在の時刻を比較する関数があります。
DateTime.Now
これにより、時間は異なります。つまり、残り2分または残り4分です。
発見された問題は、一部のユーザーが自分の携帯電話に時計を正しく設定していないか、意図的に少し前に進めていないことです。
これにより、上記の計算が正しくなくなります。
これを回避する方法はありますか?誰かから「リアルタイム」を読む。時間の計算は、簡単にするためにサーバー側ではなく電話で行われます。
IMOの問題は、実装ではなく設計です。
ユーザーの時間は、ユーザーの選択、合法(たとえば、ロシアではタイムゾーンと夏時間を定義する法律が数年ごとに変更されるため、政府はまだそこにあることを人々に思い出させる)、技術的(ハードウェアの故障、モバイルオペレーターの機器の誤ったセットアップ)。
修正方法には3つのオプションがあります。
サーバーにDateTimeではなくTimeSpanを返すようにします。
サーバーにクライアントの現在の時刻を取得させ、クライアントの時計でETAを返します。
(最も複雑で、「Solar + Lunar EclipseSchedule」アプリなどの非常に時間に敏感なタスクにのみ必要です)アプリの起動とアクティブ化時に、クライアントのデバイスでのUTC日付と時刻の時間差についてサーバーとネゴシエートします。とサーバーの時計。