如果您想要本地日期对象的 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