0

PhoneGap を使用してモバイル アプリを作成しようとしています。切断モードで動作するアプリが必要です。そのため、データをローカルに保存していて、接続がオンラインになったときにリモート データと同期します。リモート同期を実行するには、lastmodified の日付をサーバーに渡して、クライアントにプッシュする更新を認識させる必要があります。問題は、サーバーの時刻とクライアントの時刻が異なることです。真実のポイントはサーバーの日付であるため、サーバー上のクライアントの日付を解釈して、サーバーの日付と一致させるか、クライアントからサーバーの日付を渡すことができる必要があります。それを行う方法に関する提案はありますか?使おうと思ってた

(new Date()).getTimezoneOffset() 

JavaScript から、それに基づいてクライアントの日付を調整します。しかし、それにはデイライトセービングの問題があります。助言がありますか?サーバーは ASP.NET MVC 4 サイトです

4

1 に答える 1

1

多くのタイム ゾーンで複数のクライアントが動作している場合、サーバーとクライアントの間の時差を計算し、サーバーにクエリを実行するときにそれを適用するという方法があります。以下は手順です

  1. クライアントは午前 10 時にサーバーからデータをダウンロードします (クライアントの場合と同様)。
  2. クライアントは最後にダウンロードされた時間を保存します
  3. クライアントがオフラインになる
  4. クライアントは午後 1 時 30 分にオンラインになり、今がサーバーと同期するのに適した時間であると判断します。
  5. クライアントがサーバーに現在の時刻を尋ねると、サーバーは午後 2 時 45 分に応答します。
  6. これで、クライアントはサーバーとの時間差が 1 時間 15 分であることを認識します。
  7. クライアントは、この 1 時間 15 分の差分を最後のダウンロード時刻に適用し(ステップ 2)、サーバー時間の午前 11 時 15 分以降の更新を送信するようサーバーに要求します。

クライアントは 2 つの同期操作中にタイム ゾーンをまたがる可能性があるため、トランザクション (同期操作) ごとに適用デルタを計算する必要があることに注意してください。

他にもクールな解決策があるかもしれませんが、これは単純な解決策として頭に浮かぶものです。

乾杯

于 2013-02-26T05:15:12.037 に答える