Дано:
const d1 = new Date(y, mo -1, d, h, m)
затем:
d1.getHours() != h
только в случаях, когда выполняется одно из следующих условий:
- ч не существует на эту дату (например, он находится в период перехода от стандартного к летнему времени)
- ч <0 </li>
- ч> 23.
Следующее показывает, что когда ни один из них не соответствует действительности, то d.getHours() == h
let [Y, M, D, h, m, s] = [2018, 0, 1, 15, 30, 15]; // 2018-01-01T15:30:15
var d = new Date(Y, M, D, h, m, s);
console.log(d.getHours() == h);
Как правильно использовать Date для обработки ввода пользователя и как вызывать toISOString для получения локальных меток времени?
Где Dateконструктор вызывается с более чем одним аргументом, значения рассматриваются как локальные.Чтобы рассматривать их как UTC, используйте метод Date.UTC :
`new Date(Date.UTC(Y, M, D, h, m, s));
Метод toISOString всегда возвращает метку времени UTC.Если вам нужна метка времени ISO 8601 с локальным смещением часового пояса, вам следует либо использовать библиотеку, либо написать собственную функцию, например:
function toISOStringLocal(d) {
// Pad single digit numbers with leading zero
function z(n){return (n<10?'0':'') + n}
// Convert timezoneOffset to HH:mm
function formatOffset(offset) {
let sign = offset < 0? '+' : '-';
offset = Math.abs(offset);
return sign + z(offset/60|0) + ':' + z(offset%60);
}
return d.getFullYear() + '-' + z(d.getMonth()+1) + '-' +
z(d.getDate()) + 'T' + z(d.getHours()) + ':' +
z(d.getMinutes()) + ':' + z(d.getSeconds()) +
formatOffset(d.getTimezoneOffset());
}
console.log(toISOStringLocal(new Date()));
Использование «:» в смещении должно соответствовать ECMA-262 и должно допускаться синтаксическими анализаторами, совместимыми с ISO 8601.