UTC时间在JavaScript中

我正在尝试获取当前的UTC日期以存储在我的数据库中。 我的当地时间是下午9点11分,这相当于上午1点11分。 当我查看我的数据库时,我注意到下午1:11正在写入。 我很困惑。 为了在JavaScript中获得UTC时间,我使用下面的代码:

var currentDate = new Date();
var utcDate = Date.UTC(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), currentDate.getHours(), currentDate.getMinutes(), currentDate.getSeconds(), currentDate.getMilliseconds());
var result = new Date(utcDate);

我究竟做错了什么?


搜索结果发现你可以这样做:

var now = new Date(),
    utcDate = new Date(
        now.getUTCFullYear(),
        now.getUTCMonth(),
        now.getUTCDate(),
        now.getUTCHours(),
        now.getUTCMinutes(), 
        now.getUTCSeconds()
    );

更短:

var utcDate = new Date(new Date().toUTCString().substr(0, 25));

如何将JavaScript日期转换为UTC?

这是一种常用的方法,而不是创建一个ISO8601字符串,以获取UTC的日期和时间。 因为如果你使用了一个字符串,那么你将无法使用Date()每一个本地方法,并且有些人可能会使用regex,这比本地方法慢。

但是,如果您将其存储在某种数据库(如localstorage ,建议使用ISO8601字符串,因为它也可以节省时区偏移量,但在您的情况下,每个date都转换为UTC,因此时区确实无关紧要。


如果您想要本地日期对象的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 + 5小时,那么它会在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
链接地址: http://www.djcxy.com/p/59577.html

上一篇: UTC Times in JavaScript

下一篇: Android : programmatically copying apk to /system/app