检查现有日期对象是否为UTC - Javascript

时间:2012-11-06 09:22:23

标签: javascript date timezone

我使用Javascript函数将日期转换为UTC日期,如下所示:

Date.prototype.convertToUTC = function () {
var month = this.getMonth();
var day = this.getDate();
var year = this.getFullYear();
return new Date(Date.UTC(year, month, day));
}

现在,当应用此功能的日期已经是UTC时,就会出现问题。由于我不知道用户是否会在UTC /本地日期调用此方法,因此我希望确保仅在不是UTC时才进行转换。请帮忙。

2 个答案:

答案 0 :(得分:1)

所有日期的核心都是UTC time value。根据系统设置,在主机中创建的日期对象将被指定为只读timezone offset,使用getDategetHours等读取的值将基于该偏移量。

如果您想要自纪元以来的UTC毫秒,请使用getTime()方法。或者,还有UTC方法getUTCDaygetUTCHours等来构建您自己的格式化字符串。

最后,有toISOString应返回UTC的ISO格式的日期字符串,但在不那么旧的浏览器中可能缺少支持。

一些例子

为2012-11-06T15:45:01Z创建本地日期对象:

var date = new Date(Date.UTC(2012, 10, 6, 15, 45, 1));

从该(或任何)日期对象获取ISO日期字符串:

var isoString = date.toISOString();

获取UTC时间值(以毫秒为单位)(自1970-01-01T00:00:00Z以来的ms):

var timeValue = date.getTime();

将该时间值转回本地日期对象:

var date = new Date(timeValue);

答案 1 :(得分:1)

JavaScript Date对象的方法为getTimezoneOffset()。你可以用它。或者使用getUTC*方法:

 var d = new Date();
 var utcyear = d.getUTCFullYear();