如何删除getTimezoneOffset

时间:2017-03-16 22:39:33

标签: javascript date timezone

我知道Date对象正在使用机器时区(代码运行的地方)。我有一个特定的用例,我需要清除偏移量。

var d = new Date();
console.log(d.getTimezoneOffset())

这将打印UTC的偏移量。 我想强制偏移为零,我做了这个

var getTimezoneOffset = Date.prototype.getTimezoneOffset;
Date.prototype.getTimezoneOffset = function removeTimezoneOffset() {
    return 0;
  };

我在做了一些事后重置了

Date.prototype.getTimezoneOffset = getTimezoneOffset

这将在抱怨Date prototype is read only, properties should not be added中失败。 有没有更好的方法来消除时间偏移?

2 个答案:

答案 0 :(得分:1)

我觉得您正在使用其他使用 getTimezoneOffset 的代码而不是修改该代码,而您正在更改该方法。

在不知道具体问题的情况下,您还可以通过本地时区偏移修改日期,以便“本地”方法返回UTC值:

function formatAsISO(d){
  function z(n){return (n<10?'0':'')+n}
  return d.getFullYear() + '-' + z(d.getMonth()+1) + '-' +
         z(d.getDate()) + ' ' + z(d.getHours()) + ':' +
         z(d.getMinutes()) + ':' + z(d.getSeconds());
}

var d = new Date();

// Local date
console.log('Local   : ' + formatAsISO(d));

// UTC equivalent
console.log('UTC     : ' + d.toISOString());

// Adjust so local looks like UTC
d.setMinutes(d.getMinutes() + d.getTimezoneOffset());
console.log('Adjusted: ' + formatAsISO(d));

修改实际日期,因此您可能需要将其副本传递给(未指定)函数。

答案 1 :(得分:0)

你可能想要date.toISOString(),或以其他方式检查这个问题; How do you convert a JavaScript date to UTC?