You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 07:00:58