为何使用getDate()时不同日期分隔符的JS代码输出结果不同?
日期解析差异原因
这是因为Date构造函数对不同格式的日期字符串采用了不同的时区解析规则:
- 用短横线(-)分隔的日期格式(如
"2022-05-15")属于ISO 8601标准格式,Date会默认按UTC时区解析该日期,即代表UTC时间的2022年5月15日00:00。如果你的本地时区在UTC以东(比如中国是UTC+8),这个UTC时间对应的本地时间是前一天的16:00,所以调用getDate()获取本地日期时会得到14。 - 用斜杠(/)分隔的日期格式(如
"2022/05/15"),Date会按本地时区解析,直接代表本地时间的2022年5月15日00:00,因此getDate()返回的就是15。
可以通过打印不同时区的时间来验证:
temp = new Date("2022-05-15") temp1 = new Date('2022/05/15') console.log(temp.toUTCString()); // 输出 Wed, 15 May 2022 00:00:00 GMT console.log(temp.toLocaleString()); // 中国时区下输出 2022/5/15 08:00:00 console.log(temp1.toLocaleString()); // 中国时区下输出 2022/5/15 00:00:00
内容的提问来源于stack exchange,提问作者DCR
相关产品推荐
相关产品推荐

