Webサイトに正確な現地時間を表示しますか?
-
04-07-2019 - |
質問
ウェブサイトに「正しい」時間を表示するように求められましたが、このようなさまざまな方法で「正しい」と解釈できるため、率直に言ってかなり無意味だと感じています。
現在のメソッドは、サーバーからのdatetimeをパラメーターとして使用してonloadを実行するJavaScriptをレンダリングするサーバーコントロールを使用し、最終的にページにレンダリングしてから増分を開始するJavaScriptでクロックオブジェクトを作成するため、間違いなく不正確な時間になりますクロック。サーバー処理、ネットワーク遅延、クライアント側のパフォーマンス(オンロードで実行されるものは他にもたくさんあります)の間、クロックは実際のサーバー時間からずれてしまい、クライアントPCと比較して誰が知っていますか。
つまり、表示される「正しい」時間を取得するには、
- ローカルPC時間を使用して、新しいDate()をJavaScriptクロックオブジェクトに渡します。長所:PCクロックにできるだけ近づける必要があります。短所:どのタイムゾーンでPCクロックが正確であるかはわかりません。
- NTPサーバーへのTCP要求にWebサービスを使用して、Webページのクロックを更新します。長所:ローカルPCもNTPに同期されると、正確で最良の一致が得られます。短所:サーバーに関連するすべてのタイムゾーン調整を処理する必要があります。 PCの時計が切れている場合でも、不一致があります。
独自のWebサービスを実装するか、次のようなものを使用しますか。 Earth Tools またはWorld Time Web Service( EDIT:リンクが削除されました-現在404)
原子時計Webのジョンギャロウェイのブログ投稿サービスはかなり古いですが、私がグーグルで検索してもランクが高く、結論に達しません。
うまくいけば、サーバークロック(GMT)への同期がそのタイムゾーンにないのに意味がないのはなぜか、ローカルPCを一致させる必要さえあるという理由で、経営陣との議論に勝つことができます。
これに関する角度がありませんか?
解決
オークションWebアプリでクライアントに正確な時間を表示する必要がありました。ページとともに現在のサーバー時間を送信し、ページの残りがロードされるのを待たずにJavaScriptをすぐに初期化できます。そのため、あなたはネットワーク遅延だけを扱っていますが、最悪の場合は数秒を超えることはないでしょう。
その後、正確な時間にかなり近づいています。 Javascriptタイマーコードが適切に記述されていれば、次のページがロードされるまで同期がとれなくなることはありません。しかし、私は多くの悪いJSクロックコードを見てきました。 (ヒント:Date()良い、setTimeout()悪い。)
ユーザーが長時間座っているアプリケーションがある場合は、ページまたはAjaxをリロードすることで時刻同期を更新してください。
タイムゾーンについては心配しません。UTC時間を使用するだけなので、何時に起こるか混乱することはありません。
他のヒント
最初に、Windows、Linux、およびOSXのすべてに、ほとんど常にユーザーに表示される(または非常に簡単に表示される)組み込みクロックがあることをクライアントが認識していることを確認してください。また、組み込みクロックをオペレーティングシステムから隠すように設定されている可能性のあるキオスクの近くにある物理クロックをクライアントが認識していることを確認してください。
それを知っていて、クライアントがまだあなたのウェブサイトに時計を望んでいるなら、クライアントに「正しい」と定義させてください。その後、定義に一致するソリューションを実装します(どちらのソリューションも、最も可能性の高い2つの定義を処理するようです)。
ジオターゲティングを使用して、ウェブサイト訪問者の物理的な位置を把握し、データベースはゾーンの(GMT-XX:XX)を保存し、リクエストの場所に基づいて時間を計算します。サードパーティのWebサービスへの長い旅を節約できます。
別の実装方法として、 IP Geolocation を使用します。ユーザーのIP(通常はタイムゾーンを含む)に基づいてユーザーがどこから接続しているかを伝えることができるサービスがあり、その情報をサーバーのリアルタイムクロックと組み合わせて、ユーザーに現地時間を表示できます。
それは完全にはほど遠い、特にどこにも接続していないように見える企業ユーザーにとっては(私はアルゼンチンに住んでいるが、私の職場のインターネット接続はアメリカの会社の従業員であるため、すべてのウェブサイトがmは米国にあります)
UTCでの処理時間。
- ユーザーに使用したいゾーンを教えてください。
- ユーザーに永続的なプロファイルがある場合は、選択を保持します。
- 常にUTCと現地時間を並べて表示し、明確にラベルを付けます。
ユーザーが指定した任意の数のゾーンクロックを表示することもできます。 Vista これを行うと私はどのように驚いたまま 便利です。