timeago Jquery プラグインを使用して、「5 分前」などの文字列を出力しています。
プラグインは ISO 8601 日付形式を使用します。
コンソールで次のような Date オブジェクトがあります。
Sat Jun 15 2013 07:16:23 GMT+0530 (India Standard Time)
それを ISO 8601 に変換するには、次のようにします。
date = date.toISOString();
コンソールには次のように表示されます。
2013-06-15T01:46:23Z
どうやら、タイムゾーンが UTC ( Z は UTC の略) に設定されているようです。すべてがローカル タイムゾーンではなく UTC になっているため、これは timeago プラグインを台無しにします。
私はこれを試しました:
Date.prototype.toISOStringfix = function() {
function pad(n) { return n < 10 ? '0' + n : n }
return this.getUTCFullYear() + '-'
+ pad(this.getUTCMonth() + 1) + '-'
+ pad(this.getUTCDate()) + 'T'
+ pad(this.getUTCHours()) + ':'
+ pad(this.getUTCMinutes()) + ':'
+ pad(this.getUTCSeconds()) + 'Z';
};
ただし、同じ結果が得られます。
なぜこれが起こるのですか?どうすれば修正できますか?