ローカル日付オブジェクトのUTC時刻が必要な場合は、UTCメソッドを使用して取得します。すべてのjavascript日付オブジェクトはローカル日付です。
var date = new Date(); // date object in local timezone
UTC時刻が必要な場合は、実装に依存するtoUTCString
方法を試すことができます。
var UTCstring = date.toUTCString();
しかし、私はそれを信用しません。UTC時間でISO8601文字列(ほとんどのデータベースが必要)が必要な場合は、次のようにします。
var isoDate = date.getUTCFullYear() + '-' +
addZ((date.getUTCMonth()) + 1) + '-' +
addZ(date.getUTCDate()) + 'T' +
addZ(date.getUTCHours()) + ':' +
addZ(date.getUTCMinutes()) + ':' +
addZ(date.getUTCSeconds()) + 'Z';
ここで、addZ
関数は次のとおりです。
function addZ(n) {
return (n<10? '0' : '') + n;
}
それに合わせて変更します。
編集
UTCと同じ時刻を表示するようにローカル日付オブジェクトを調整するには、タイムゾーンオフセットを追加するだけです。
function adjustToUTC(d) {
d.setMinutes(d.getMinutes() + d.getTimezoneOffset());
return d;
}
alert(adjustToUTC(new Date())); // shows UTC time but will display local offset
上記に注意してください。UTC + 5hrsと言うと、5時間前の日付オブジェクトが返されますが、それでも「UTC+5」と表示されます。
UTC ISO8601文字列をローカル日付オブジェクトに変換する関数:
function fromUTCISOString(s) {
var b = s.split(/[-T:\.Z]/i);
var n= new Date(Date.UTC(b[0],b[1]-1,b[2],b[3],b[4],b[5]));
return n;
}
alert(fromUTCISOString('2012-05-21T14:32:12Z')); // local time displayed