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
相关产品推荐
相关产品推荐

