Проблема с .toISOString()
Рассмотрим следующий код 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
Может ли кто-нибудь помочь понять эту разницу в дате и времени
Ответы
Ответ 1
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
Ответ 2
2013-18-04 00:00:00 GMT+0530
2013-17-04 18:30:00 GMT+0000
Это две метки времени. Первый имеет часовой пояс, второй - GMT (без регулировки часового пояса). Если вы возьмете вторую временную метку и добавьте 05:30:00
в 18:30:00
, вы получите полночь следующего дня. Это соответствует первой отметке времени.
Ответ 3
Также вы можете удалить часовой пояс следующим образом:
let birthday = new Date(this.profile.birthday + ' UTC').toISOString();