jQuery日期格式转换问题:16-Mar-2016转2016-03-16代码无效
解决16-Mar-2016转2016-03-16的日期格式问题
你的代码没法正常运行主要有两个关键问题:
- 首先,
Date.parse(16-Mar-2016)里的日期字符串没加引号,JavaScript会把16-Mar-2016当成变量名而非字符串,直接触发语法错误,得改成Date.parse("16-Mar-2016")才行。 - 其次,原生JavaScript的Date对象根本没有内置的
format()方法,这个方法一般是jQuery UI Datepicker或者第三方日期库(比如moment.js)提供的,直接调用肯定会报错。
下面给你几种可行的解决方案:
方案一:原生JavaScript手动格式化(无需额外库)
如果不想引入任何第三方依赖,自己写个简单函数就能搞定:
function formatTargetDate(dateStr) { // 先正确创建Date实例 const date = new Date(dateStr); // 提取年份 const year = date.getFullYear(); // 提取月份(注意getMonth返回0-11,要加1后补零到两位) const month = String(date.getMonth() + 1).padStart(2, '0'); // 提取日期并补零到两位 const day = String(date.getDate()).padStart(2, '0'); // 拼接成目标格式 return `${year}-${month}-${day}`; } // 使用示例 const requestStartDate = formatTargetDate("16-Mar-2016"); console.log(requestStartDate); // 输出:2016-03-16
方案二:使用moment.js(简洁高效)
如果你的项目里已经用了moment.js(或者可以引入它),代码会非常简洁直观:
// 确保已引入moment.js const requestStartDate = moment("16-Mar-2016", "DD-MMM-YYYY").format("YYYY-MM-DD"); console.log(requestStartDate); // 输出:2016-03-16
方案三:使用jQuery UI Datepicker
如果你的项目已经引入了jQuery和jQuery UI,也可以用它自带的格式化方法:
// 确保已引入jQuery和jQuery UI const date = new Date("16-Mar-2016"); const requestStartDate = $.datepicker.formatDate("yy-mm-dd", date); console.log(requestStartDate); // 输出:2016-03-16
这里的yy对应四位年份,mm对应两位月份,dd对应两位日期,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者S Mugunthan kumar
相关产品推荐
相关产品推荐

