You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:32:28