.toISOString()函数问题

时间:2013-04-18 13:28:53

标签: javascript

考虑以下代码HTML + JavaScript:

<!DOCTYPE html>
<html>
<body>

<p id="demo">Click the button to display a date after changing the hours, minutes, and seconds.</p>

<button onclick="myFunction()">Try it</button>
 <script>
 function myFunction()
  {
  var d = new Date();
  d.setHours(0,0,0,0);
  document.write(d + '<br/>');
  document.write('ISO Date '+ d.toISOString() + '<br/>');
  //I want it to be 2013-04-17T00:00:00.000Z
  }
 </script>
</body>
</html>

输出

Thu Apr 18 2013 00:00:00 GMT+0530 (India Standard Time)
ISO Date 2013-04-17T18:30:00.000Z

任何人都可以帮助理解日期和时间的这种差异吗?时间

3 个答案:

答案 0 :(得分:25)

var d = new Date();
d.setHours(-12, d.getTimezoneOffset(), 0, 0); //removing the timezone offset and 12 hours
console.log(d.toISOString()); //2013-04-17T00:00:00.000Z

我不知道,你为什么要提前一天申请ISO日期,但如果是错字:

var d = new Date();
d.setHours(0, -d.getTimezoneOffset(), 0, 0); //removing the timezone offset.
console.log(d.toISOString()); //2013-04-18T00:00:00.000Z

答案 1 :(得分:4)

2013-18-04 00:00:00 GMT+0530
2013-17-04 18:30:00 GMT+0000

这是两个时间戳。第一个是时区,第二个是GMT(没有时区调整)。如果您采用第二个时间戳并将05:30:00添加到18:30:00,则会在第二天的午夜到达。这匹配第一个时间戳。

答案 2 :(得分:1)

你也可以删除这样的时区:

let birthday = new Date(this.profile.birthday + ' UTC').toISOString();