如何创建返回Date对象的函数?控制台输出格式不符问题排查
问题解决:将dd/mm/yyyy格式转为指定格式的Date输出
你的代码输出ISO格式日期的原因有两个:
- 你在日期字符串末尾加了
Z,这会让Date对象以UTC时间解析,导致输出偏向ISO标准格式。 - 直接
console.log(Date对象)时,部分环境会默认输出ISO格式,而你需要的是toString()方法返回的格式。
修正方案
方法1:调整字符串构造并调用toString()
去掉末尾的Z,确保日期以本地时间解析,输出时显式调用toString():
function convertDate(date) { let dateArray = date.split("/"); // 构造 yyyy/mm/dd 格式的本地日期字符串,去掉Z let dateString = `${dateArray[2]}/${dateArray[1]}/${dateArray[0]}`; let dateDate = new Date(dateString); return dateDate; } // 调用toString()得到预期格式 console.log(convertDate("05/12/2022").toString());
方法2:使用Date构造函数的参数(更稳妥,避免解析歧义)
直接传入年、月、日参数(注意月份是0索引,要减1),这样能避免不同浏览器对日期字符串解析的差异:
function convertDate(date) { let [day, month, year] = date.split("/"); // 月份从0开始,所以要转成数字后减1 let dateDate = new Date(year, month - 1, day); return dateDate; } console.log(convertDate("05/12/2022").toString());
两种方法执行后,都会输出类似:Mon Dec 05 2022 00:00:00 GMT+0800 (中国标准时间)的格式,符合你的需求。
内容的提问来源于stack exchange,提问作者marioconde
相关产品推荐
相关产品推荐

