0

DateJavascript では、オブジェクトのメソッドを使用して、現在のユーザーのローカル タイム ゾーンで日付を表示および操作するのはかなり簡単です。たとえば、出力用と入力用のコンストラクターtoLocaleString()の 7 引数形式です。Dateそのため、これまでユーザー設定としてタイムゾーンを設定することさえ気にしませんでした。内部的にはすべてが保存され、計算され、UTC を使用してクライアントとやり取りされます。入力と出力の両方について、クライアント側で変換を行います。

たとえば、ユーザーのローカル マシンのタイム ゾーンが米国東部に設定されているとします。私の Web ページを見ると、Unix タイムスタンプで発生したイベントは、1359416775000「2013 年 1 月 28 日月曜日 18:46:15」と表示され、コードはそれほど複雑ではありません。

new Date(1359416775000).toLocaleString();

しかし、このイベントに関するメールをそのユーザーに送信する必要があるとします。このメールのタイムスタンプを表示するには、どのタイム ゾーンを使用すればよいですか? 明らかな答えは、ユーザーがタイムゾーンを選択できるようにすることです。ここで、私がこれを行い、このユーザーがUS/Eastern. 偉大な。次にユーザーが私の Web サイトにログインしたときに、ローカル マシンが米国中部時間になっているとします。同じ Javascript コードによって、タイムスタンプが "Mon Jan 28 17 :46:15 2013" としてレンダリングされるようになります。

これは本当に正しい行動ですか?ユーザーがアプリケーションでタイム ゾーンを選択しましたが、それは電子メールにのみ適用されますか?

これは、一般的なベスト プラクティスがあるべきだと私が感じる十分に一般的な問題のように思えます。

4

2 に答える 2

2

デフォルトでは、常にユーザーのローカル タイム ゾーンで時刻を表示する必要があります。別のタイムゾーンを使用して時刻を表示するときはいつでも、タイムゾーンも印刷することで明確にする必要があります。

そのため、ユーザーのタイムゾーンが米国/東部の場合、例では「2013 年 1 月 28 日月曜日 18:46:15」というホストのタイムゾーンで時間を表示しますが、実際に米国で発生するイベントをユーザーに表示する場合は、 /Central の場合、「Mon Jan 28 17:46:15 2013 US/Central」と表示する必要があります。

ユーザーがタイム ゾーンが US/Central のコンピューターに移動した場合、はい、デフォルトとして、US/Central で時間を表示する必要があります。したがって、どちらの場合も、日付を「Mon Jan 28 18:46:15 2013」と表示し、タイムゾーンは必要ありません。画面の隅にコンピューターの現在の時刻が表示されるため、あまり混乱することはありません。

クライアントのタイム ゾーン設定によって時間表示が決定されないサイトで一般的なタイム ゾーンの選択をユーザーに許可する場合、既定では、タイム ゾーンに関係なく、常にそのタイム ゾーンの時刻を表示する必要があります。コンピュータが正しいタイム ゾーンにあることを確認するのはユーザーの責任であることを忘れないでください。ラップトップを持って旅行するほとんどの人は、移動してもタイム ゾーンを変更しません。

理論的には、IP から位置情報を取得することで、ユーザーが現在いると思われるタイム ゾーンとは別のタイム ゾーンを選択したことをユーザーに警告することができます。しかし、あなたがカレンダーアプリケーションを書いているのでない限り、私はそれが人々を助けるよりも悩ませると思います.

于 2013-01-29T13:07:00.823 に答える
1

残念ながら、UTC 以外の日付メソッドで使用されるユーザーのタイムゾーンを設定することはできません。

この例のように、日付を出力/読み取るときにカスタムタイムゾーンオフセットを追加/減算することによってのみ、これを回避できます。

于 2013-01-28T23:28:20.453 に答える