如何将jQuery日期选择器输出的常规日期格式转为YYYY-MM-DD?
别着急,我来帮你搞定这个日期格式转换的问题!其实有两种思路,一种是从根源上让jQuery日期选择器直接输出你要的格式,另一种是把已经拿到的日期字符串转换成目标格式,两种方法我都给你详细说说:
方法一:直接让jQuery Datepicker输出目标格式
这是最省心的做法,不用后期再处理字符串。
- 如果是英语环境的日期选择器,初始化时直接指定
dateFormat参数即可:
$( "#datepicker" ).datepicker({ dateFormat: "yy-mm-dd" // 直接输出YYYY-MM-DD格式,比如2018-06-06 // 要是想要DD-MM-YYYY格式,改成"dd-mm-yy"就行 });
- 如果是西班牙语的日期选择器(输出
junio这类月份名),你可以先配置西班牙语本地化信息,再指定格式:
// 手动配置西班牙语月份(没引入官方本地化文件时用这个) $.datepicker.regional['es'] = { monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'], }; $.datepicker.setDefaults($.datepicker.regional['es']); // 初始化日期选择器并指定输出格式 $( "#datepicker" ).datepicker({ dateFormat: "dd-mm-yy" // 输出DD-MM-YYYY格式,比如06-06-2018 });
这样选择器就会直接输出你想要的格式,不用再做额外转换啦。
方法二:转换已有的日期字符串(比如"junio 6, 2018"或"june 6, 2018")
如果已经拿到了这种带月份名称的字符串,我们可以手动解析转换。核心是先建立月份名称到数字的映射,再拆分字符串提取各部分,最后拼接成目标格式:
function convertDateString(dateStr) { // 建立英语+西班牙语月份到两位数字的映射 const monthMap = { // 英语月份 january: '01', february: '02', march: '03', april: '04', may: '05', june: '06', july: '07', august: '08', september: '09', october: '10', november: '11', december: '12', // 西班牙语月份 enero: '01', febrero: '02', marzo: '03', abril: '04', mayo: '05', junio: '06', julio: '07', agosto: '08', septiembre: '09', octubre: '10', noviembre: '11', diciembre: '12' }; // 拆分日期字符串,处理大小写和多余符号 const parts = dateStr.toLowerCase().split(' '); const month = monthMap[parts[0]]; const day = parts[1].replace(',', '').padStart(2, '0'); // 给个位数日期补前导零 const year = parts[2]; // 返回你需要的格式,按需调整顺序即可 return `${year}-${month}-${day}`; // YYYY-MM-DD格式 // 要是要DD-MM-YYYY,改成`${day}-${month}-${year}` } // 测试示例 console.log(convertDateString("junio 6, 2018")); // 输出2018-06-06 console.log(convertDateString("june 6, 2018")); // 输出2018-06-06
这个函数能同时处理两种语言的月份名称,还会自动补全日期的前导零,保证格式统一。
内容的提问来源于stack exchange,提问作者Alex Garret jones
相关产品推荐
相关产品推荐

