tracevipin の投稿からの会話を要約するには:
すべての Date オブジェクトは、1970-01-01T00:00:00Z からのミリ秒単位の時間値に基づいているため、コアは UTC です。これは、同じエポックからの秒数を表す値を使用する UNIX とは異なります。
Date.prototype.toStringメソッドは、システム設定とクライアントのタイムゾーン オフセット (ローカル時間) に基づく時間を表す実装依存の文字列を返します。
UTC ISO8601 時刻文字列が必要な場合は、Date.prototype.toISOStringメソッドを使用できます。必要に応じて、このメソッドの「シム」を作成するのは非常に簡単です。
最後に、 Date.parseを信頼して文字列を解析しないでください。ISO8601 形式の UTC 文字列のサポートは ES5 で指定されていますが、使用中のブラウザー間で一貫して実装されているわけではありません。幅広いブラウザサポートが必要な場合 (典型的な Web アプリケーションなど) は、文字列を手動で解析する方がはるかに優れています (難しいことではありません。その方法の例が SO にあります)。
シンプルな ISO8601 UTC タイムスタンプ パーサー:
function dateObjectFromUTC(s) {
s = s.split(/\D/);
return new Date(Date.UTC(+s[0], --s[1], +s[2], +s[3], +s[4], +s[5], 0));
}
toISOString の shim は次のとおりです。
if (typeof Date.prototype.toISOString != 'function') {
Date.prototype.toISOString = (function() {
function z(n){return (n<10? '0' : '') + n;}
function p(n){
n = n < 10? z(n) : n;
return n < 100? z(n) : n;
}
return function() {
return this.getUTCFullYear() + '-' +
z(this.getUTCMonth() + 1) + '-' +
z(this.getUTCDate()) + 'T' +
z(this.getUTCHours()) + ':' +
z(this.getUTCMinutes()) + ':' +
z(this.getUTCSeconds()) + '.' +
p(this.getUTCMilliseconds()) + 'Z';
}
}());
}