JavaScript日期时间格式转换:将指定格式转为Y-m-d H:i:s
解决JavaScript日期格式转换问题
嘿,作为JS初学者碰到日期格式转换的小难题太正常了,我来一步步教你把「27 June 2018 - 05:25」转成「Y-m-d H:i:s」格式:
方法一:手动解析组装(兼容性拉满,适合理解基础逻辑)
先把输入字符串处理成Date对象能识别的格式,再拆分时间部分补零拼接,逻辑清晰好上手:
function formatDate(inputStr) { // 先把原字符串里的 " - " 换成空格,避免Date解析出错 const dateStr = inputStr.replace(' - ', ' '); const date = new Date(dateStr); // 提取各个时间段,注意月份是从0开始的,得加1 const year = date.getFullYear(); // 给单个数字的月份补零,比如6月转成"06" const month = String(date.getMonth() + 1).padStart(2, '0'); // 日期补零 const day = String(date.getDate()).padStart(2, '0'); // 小时补零 const hours = String(date.getHours()).padStart(2, '0'); // 分钟补零 const minutes = String(date.getMinutes()).padStart(2, '0'); // 原输入没给秒数,默认补00 const seconds = '00'; // 拼接成目标格式 return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; } // 测试一下 const input = "27 June 2018 - 05:25"; console.log(formatDate(input)); // 输出:2018-06-27 05:25:00
方法二:使用Intl.DateTimeFormat(简洁高效,现代环境首选)
如果不需要兼容IE这类老浏览器,用JS内置的国际化API能少写很多代码:
function formatDateWithIntl(inputStr) { const dateStr = inputStr.replace(' - ', ' '); const date = new Date(dateStr); // 配置格式化规则,指定24小时制、补零等要求 const options = { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false // 强制使用24小时制 }; // 利用en-CA地区的格式(默认是YYYY-MM-DD),再替换掉斜杠(如果有的话) return new Intl.DateTimeFormat('en-CA', options).format(date).replace(/\//g, '-'); } // 测试 console.log(formatDateWithIntl("27 June 2018 - 05:25")); // 输出:2018-06-27 05:25:00
小提醒
- 替换
-是为了避免部分浏览器对原字符串格式解析失败,换成空格后兼容性更好; padStart(2, '0')是给单个数字的时间段补零的关键,保证格式统一成两位数字;- 如果后续输入里会包含秒数,只要调整提取逻辑或者修改Intl的配置就能适配。
内容的提问来源于stack exchange,提问作者TitusMix
相关产品推荐
相关产品推荐

