JavaScript日期因BST与GMT时区差异偏差一天问题咨询
日期偏差问题:BST时区下JavaScript日期处理异常
我遇到了JavaScript生成日期偏差一天的问题,根源是英国夏令时(BST, +1)与格林尼治标准时间(GMT)的时区差异。
问题示例
第一个日期显示正常,但后续日期均偏差一天:
console.log(new Date('2022', '02', '24')); // 24 (2022-03-24T00:00:00.000Z) console.log(new Date('2022', '09', '24')); // 23 (2022-10-23T23:00:00.000Z) console.log(new Date('2022', '08', '24')); // 23 (2022-09-23T23:00:00.000Z)
疑问与分析
根据文档内容:使用字符串创建日期时会采用UTC时区,而我当前时区比UTC快1小时。由于未指定时间,默认00:00,对应UTC前一天的23:00,这个理解对吗?
我想获取一致的7天前日期,尝试用getTimezoneOffset()处理,代码如下:
const oneWeekAgo = new Date( utcDate.getFullYear(), utcDate.getMonth(), utcDate.getDate() - 7 ) + utcDate.getTimezoneOffset();
这段代码能得到正确日期,但格式不符合需求。我不确定这个方案是否合理,因为看到的相关解决方案都是针对UTC以西(慢于UTC)的时区,而我在UTC以东(快于UTC),担心两者解决方案不兼容。
相关引用
对于"March 7, 2014"这类日期字符串,Date.parse()会采用本地时区;而对于"2014-03-07"这类ISO格式,则会采用UTC时区。
内容的提问来源于stack exchange,提问作者NickW
相关产品推荐
相关产品推荐

