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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:25:09