12

Should timestamps always use UTC (as in 2012-06-14T10:32:11+00:00) and not local time (as in 2012-06-14T06:32:11-04:00 for New York)?

References

  1. Although not a WordPress question, I believe it'll be a strong example -- the WordPress core, themes and plugins developed by the core developers, if outputting timestamp somewhere, always seem to use something like get_the_date('c'); or get_the_modified_date('c'); -- which always output timestamp in UTC, as in 2012-06-14T10:32:11+00:00.

  2. I just came across this answer which simply states that "Time stamps use UTC."

The question

Should timestamps be in UTC or is it just a recommended practise? (There's a lot of difference between the two.) Essentially is something like this -- 2012-06-14T06:32:11-04:00 -- wrong? How is 2012-06-14T10:32:11+00:00 better?

4

1 に答える 1

17

タイムスタンプは必ず UTC で保存する必要があります。日付の形式は、そのタイムゾーンの要件によって異なります。通常、タイムスタンプは UTC で保存されるため、他のタイムゾーンに表示するための変換がより簡単かつ可能になります。

タイムスタンプを UTC としてデータベースに保存するだけで、効果的にタイム ゾーンをビューのみに限定できます。時間の比較に関するすべての数学と論理は、世界中で同期していると見なすことができます。残りは、クライアントがどこにあるのか、どこにあるのかについてのルールを知り、結果を吐き出すだけの問題です。たとえば、Chrome 開発者コンソールを介した JavaScript の場合:

var dateObj = new Date();

console.log(dateObj);
// spits out local time
// if you and 23 other people in every time zone across the planet created
// a date object simultaneously you'd all see a different number
// adapted to your local time zones

var utcInMillis = dateObj.getTime();
// gives UTC in milliseconds.

console.log(utcInMillis);
// if you and 23 other people in every time zone across the planet created
// that same date object `dateObj` simultaneously you'd see the same number

console.log(new Date().getTime() - utcInMillis);
// how many milliseconds passed since utcinMillis was recorded and now

var utcAsDateObj = 新しい日付 (utcInMillis); console.log(utcAsDateObj); //これで、ミリ秒形式の UTC から日付オブジェクトを //簡単に復元できます

一般的に言えば、最新の Web テクノロジまたは同様のオプションがある場合、最も簡単な方法は、すべてを UTC として保存し、タイム ゾーンを厳密に表示上の問題にすることです。現地時間は、現地のコンテキストで誰かに時間を表示する以外には必要ありません。

バックエンドでばかげた非 UTC タイムスタンプに行き詰まっている場合でも、クライアント側で標準化されたオプションを UTC にする価値はあります。エントリのポイントで変換し、出口のポイントで可能な限り変換して戻します。タイムゾーンを整理し、どの場所でサマータイムが採用され、どこで無視されているかは、DIY にはあまりにも面倒であり、実際に日付オブジェクトに触れなければならない場合は、通常、避けられません。最終的に日付/時刻を実際に操作/比較します。

ページに現地時間として吐き出す直前まで、すべてがミリ秒単位で UTC として正規化されている場合よりも、これを処理する簡単な方法はありません。

于 2012-06-14T17:18:02.593 に答える