JavaScript解析UTC日期时日期显示不符,该如何处理?
解决JavaScript Date解析UTC字符串时日期显示不符的问题
当你传入带Z或+00:00的ISO 8601格式字符串时,new Date()会将其解析为UTC标准时间,再转换为你的本地时区(这里是GMT-0300)。UTC的2023-05-11 00:00:00减去3小时,就是本地的2023-05-10 21:00:00,所以日期显示为10号——这是时区转换的正常结果,但不符合你想要显示11号的需求。
可行的处理方法:
- 直接移除UTC标识:删掉字符串末尾的
Z或+00:00,这样new Date()会把字符串解析为本地时区的对应时间,就能得到你期望的2023-05-11 00:00:00:new Date("2023-05-11T00:00:00") // Thu May 11 2023 00:00:00 GMT-0300 (Argentina Standard Time) - 保留UTC字符串但获取UTC日期:如果必须保留UTC格式的输入,想要获取UTC对应的日期日数,可以使用
getUTCDate()方法:
这个方法不会改变本地时间的显示,但能拿到UTC时间对应的日期数值。const date = new Date("2023-05-11T00:00:00Z"); console.log(date.getUTCDate()); // 输出11
内容的提问来源于stack exchange,提问作者opensas
相关产品推荐
相关产品推荐

