使用js更改输入<type =“datetime-local”>值

时间:2018-03-15 14:08:06

标签: javascript datetime

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。这似乎是时区问题。怎么解决?

1 个答案:

答案 0 :(得分:0)

您可以使用getTimezoneOffset()更正时区,如下所示:

&#13;
&#13;
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;
&#13;
&#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;时间变量包含。我用它来清楚地显示变量的内容。