如何将JavaScript本地DateTime转换为MySQL Datetime格式?
将本地DateTime转换为MySQL Datetime的最优方法
针对你的需求,这里提供几种实用方法,按推荐优先级排序:
1. 原生JavaScript手动拼接(无依赖,性能最优)
无需引入任何库,直接通过Date对象的方法获取各时间部分并补零拼接,是最轻量化的方案:
const date1 = new Date(1658483664000); // 获取年、月(月份需+1,因为Date的月份是0-11)、日 const year = date1.getFullYear(); const month = String(date1.getMonth() + 1).padStart(2, '0'); const day = String(date1.getDate()).padStart(2, '0'); // 获取时、分、秒 const hours = String(date1.getHours()).padStart(2, '0'); const minutes = String(date1.getMinutes()).padStart(2, '0'); const seconds = String(date1.getSeconds()).padStart(2, '0'); // 拼接成MySQL Datetime格式 const mysqlDatetime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; console.log(mysqlDatetime); // 输出:2022-07-22 16:54:24
padStart(2, '0')用于保证月份、日期、时分秒始终为两位数字(比如把7转为07),避免格式错误。
2. 使用原生Intl.DateTimeFormat(灵活适配场景)
如果需要更灵活的时区或本地化配置,可以用原生国际化API来处理:
const date1 = new Date(1658483664000); const formatter = new Intl.DateTimeFormat('en-CA', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false, // 使用24小时制 // 可指定时区,不填则默认本地时区 // timeZone: 'Asia/Jakarta' }); // 提取各时间部分并拼接 const parts = formatter.formatToParts(date1); const mysqlDatetime = `${parts.find(p => p.type === 'year').value}-${parts.find(p => p.type === 'month').value}-${parts.find(p => p.type === 'day').value} ${parts.find(p => p.type === 'hour').value}:${parts.find(p => p.type === 'minute').value}:${parts.find(p => p.type === 'second').value}`; console.log(mysqlDatetime); // 输出:2022-07-22 16:54:24
3. 第三方日期库简化代码(适合已有依赖的项目)
如果项目已经引入了date-fns或类似日期库,可以用更简洁的代码实现:
import { format } from 'date-fns'; const date1 = new Date(1658483664000); const mysqlDatetime = format(date1, 'yyyy-MM-dd HH:mm:ss'); console.log(mysqlDatetime); // 输出:2022-07-22 16:54:24
注意:moment.js已进入维护状态,不推荐新项目使用,优先选择date-fns。
内容的提问来源于stack exchange,提问作者Dennis Liu
相关产品推荐
相关产品推荐

