鉴于:
const d1 = new Date(y, mo -1, d, h, m)
然后:
d1.getHours() != h
仅在以下情况之一为真的情况下:
-
H
在该日期不存在(例如,它正处于从标准时间到夏令时的过渡期)
-
h<0
-
以下内容显示,如果这些都不正确,则
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来获取本地时间戳?
如果使用多个参数调用日期构造函数,则将这些值视为本地值。要将它们视为UTC,请使用
Date.UTC
`new Date(Date.UTC(Y, M, D, h, m, s));
这个
toISOString
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的解析器应允许使用。