如何使用jQuery将字符串日期"17/01/2018 12:34:56"转为"2018-01-17 12:34:56"?
解决jQuery环境下日期格式转换问题
没问题,我来给你几个实用的方案,把"17/01/2018 12:34:56"转换成"2018-01-17 12:34:56"格式~
先说明下:jQuery本身没有专门的日期处理API,所以我们主要靠原生JavaScript实现,当然如果项目里已经用了常用日期库会更省心,下面分三种场景介绍:
方案一:手动字符串拆分拼接(轻量化首选,适合固定格式)
因为你的输入格式是固定的DD/MM/YYYY HH:mm:ss,直接拆分重组是最直接高效的,零依赖:
const originalDate = "17/01/2018 12:34:56"; // 拆分日期和时间部分 const [datePart, timePart] = originalDate.split(' '); // 拆分日、月、年 const [day, month, year] = datePart.split('/'); // 重组目标格式 const formattedDate = `${year}-${month}-${day} ${timePart}`; console.log(formattedDate); // 输出:2018-01-17 12:34:56
这个方法速度快,只要输入格式固定就不会出问题,完全不需要额外工具。
方案二:利用原生Date对象处理(适合需后续日期操作的场景)
如果之后还要对这个日期做加减天数、计算时间差这类操作,先转成Date对象再格式化更灵活:
const originalDate = "17/01/2018 12:34:56"; // 拆分日期和时间,避免原生Date构造函数的兼容性问题 const [dateSegment, timeSegment] = originalDate.split(' '); const [day, month, year] = dateSegment.split('/'); // 注意:原生Date的月份是从0开始的,所以要减1 const dateObj = new Date(year, month - 1, day, ...timeSegment.split(':')); // 格式化时补零,确保月份、日期都是两位数字 const formattedYear = dateObj.getFullYear(); const formattedMonth = String(dateObj.getMonth() + 1).padStart(2, '0'); const formattedDay = String(dateObj.getDate()).padStart(2, '0'); const formattedDate = `${formattedYear}-${formattedMonth}-${formattedDay} ${timeSegment}`; console.log(formattedDate); // 输出:2018-01-17 12:34:56
这个方法的优势是可以基于Date对象拓展更多日期相关操作,比如判断日期是否合法、计算两个日期的间隔等。
方案三:使用moment.js(最省心,适合已有库的项目)
如果你的项目已经引入了moment.js(很多jQuery项目都会搭配这个库处理日期),那一行代码就能搞定:
const originalDate = "17/01/2018 12:34:56"; const formattedDate = moment(originalDate, "DD/MM/YYYY HH:mm:ss").format("YYYY-MM-DD HH:mm:ss"); console.log(formattedDate); // 输出:2018-01-17 12:34:56
moment.js能处理各种复杂的日期格式转换,还自带很多实用工具方法,唯一的小缺点是需要引入额外的库文件。
内容的提问来源于stack exchange,提问作者Anand
相关产品推荐
相关产品推荐

