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

JavaScript中new Date()日期转换异常,求正确日期获取方案

解决方案:正确获取ISO UTC日期的目标日期值

针对你遇到的new Date('2013-03-27T23:59:59.999Z')转换为本地时区后日期跳转到次日的问题,以下是几种可行的替代方案,都能得到你需要的Wed Mar 27 2013 00:00:00 GMT+0100结果:

  • 直接截取日期字符串部分
    无需复杂正则,直接拆分ISO字符串提取日期段,再创建Date对象:

    new Date('2013-03-27T23:59:59.999Z'.split('T')[0])
    // 输出:Wed Mar 27 2013 00:00:00 GMT+0100
    

    原理:仅用日期部分创建的Date对象,会默认以本地时区的当日0点初始化。

  • 通过Date对象方法重置时间为本地0点
    先解析完整UTC日期,再将本地时间的时分秒毫秒设为0:

    const utcDate = new Date('2013-03-27T23:59:59.999Z');
    utcDate.setHours(0, 0, 0, 0); // 重置为本地时区当日0点
    // 输出:Wed Mar 27 2013 00:00:00 GMT+0100
    

    优势:保留了Date对象的完整操作能力,后续可按需调整。

  • 提取UTC日期后构建本地日期
    先从UTC字符串中提取年、月、日数值,直接构建本地时区的当日0点日期:

    const [year, month, day] = '2013-03-27T23:59:59.999Z'.split('T')[0].split('-').map(Number);
    const targetDate = new Date(year, month - 1, day); // 月份需减1(Date对象月份从0开始)
    // 输出:Wed Mar 27 2013 00:00:00 GMT+0100
    

    原理:直接指定年、月、日创建的Date,默认以本地时区的0点作为时间基准。

内容的提问来源于stack exchange,提问作者User1979

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:41:17