var time = new Date("2018-03-15T20:30");
time.setMinutes(time.getMinutes() + 60);
document.getElementById("myInput").valueAsNumber = time.getTime();
<input type="datetime-local" id="myInput">
这是我的代码,我希望输入显示2018-03-15T21:30,但在某些计算机(不是所有计算机)中,它将显示2018-03-15T13:30。这似乎是时区问题。怎么解决?
答案 0 :(得分:0)
您可以使用getTimezoneOffset()
更正时区,如下所示:
var time = new Date("2018-03-15T20:30");
console.log(time.getTime() + " | " + time.toUTCString());
time = new Date(time - time.getTimezoneOffset() * 60000);
console.log('After correcting timezone:')
console.log(time.getTime() + " | " + time.toUTCString());
time.setMinutes(time.getMinutes() + 60);
console.log('After adding 60 minutes:')
console.log(time.getTime() + " | " + time.toUTCString());
&#13;
我的控制台输出,我在GMT + 1时区,夏令时未激活:
1521142200000 | Thu, 15 Mar 2018 19:30:00 GMT
After correcting timezone:
1521145800000 | Thu, 15 Mar 2018 20:30:00 GMT
After adding 60 minutes:
1521149400000 | Thu, 15 Mar 2018 21:30:00 GMT
请注意toUTCString()
始终打印GMT,无论我们知道什么&#39;时间变量包含。我用它来清楚地显示变量的内容。