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

如何使用JavaScript将MM/DD/YYYY格式日期转换为DD/MM/YYYY格式?

嘿,这个需求挺常见的,我给你分享几种靠谱的JavaScript实现方式,每种都有适用场景,你可以按需挑选:

方法一:直接字符串拆分(简单高效)

如果能百分百确定输入严格遵循 MM/DD/YYYY 格式(比如不会出现单数字的月/日,或者格式混乱的情况),直接拆分重组是最快的方式:

function convertDateFormat(dateStr) {
  // 按斜杠拆分出月、日、年
  const [month, day, year] = dateStr.split('/');
  // 重新组合成 DD/MM/YYYY
  return `${day}/${month}/${year}`;
}

// 测试示例
console.log(convertDateFormat('02/16/2020')); // 输出 "16/02/2020"

要是输入可能出现单数字的月/日(比如 2/6/2020),可以加个补零小工具保证格式统一:

// 给单个数字补前导零
function padZero(num) {
  return num.toString().padStart(2, '0');
}

function convertDateFormat(dateStr) {
  const [month, day, year] = dateStr.split('/');
  return `${padZero(day)}/${padZero(month)}/${year}`;
}

console.log(convertDateFormat('2/6/2020')); // 输出 "06/02/2020"
方法二:结合Date对象做合法性校验(安全可靠)

如果需要确保输入的日期是真实存在的(比如避免 02/30/2020 这种无效日期),可以用Date对象来做校验:

function padZero(num) {
  return num.toString().padStart(2, '0');
}

function convertDateFormatWithValidation(dateStr) {
  // Date构造函数能直接解析MM/DD/YYYY格式的字符串
  const date = new Date(dateStr);
  
  // 检查日期是否有效:无效日期会返回NaN
  if (isNaN(date.getTime())) {
    throw new Error('无效的日期格式或日期不存在');
  }
  
  // 注意:Date.getMonth()返回的是0-11,所以要加1转成实际月份
  const day = padZero(date.getDate());
  const month = padZero(date.getMonth() + 1);
  const year = date.getFullYear();
  
  return `${day}/${month}/${year}`;
}

// 测试有效日期
console.log(convertDateFormatWithValidation('02/16/2020')); // 输出 "16/02/2020"

// 测试无效日期,会抛出错误
try {
  convertDateFormatWithValidation('02/30/2020');
} catch (e) {
  console.log(e.message); // 输出 "无效的日期格式或日期不存在"
}

这种方法的好处是能过滤掉不存在的日期,现代浏览器和Node.js对美式日期格式的解析兼容性很好,不用太担心环境差异。

方法三:正则表达式替换(适合批量处理)

如果需要在一段文本里批量替换日期格式,或者想用正则做初步格式校验,这种方式很方便:

简单替换(不校验)

function convertDateFormatRegex(dateStr) {
  // 正则匹配MM/DD/YYYY,分组捕获月、日、年,然后调换顺序
  return dateStr.replace(/^(\d{2})\/(\d{2})\/(\d{4})$/, '$2/$1/$3');
}

console.log(convertDateFormatRegex('02/16/2020')); // 输出 "16/02/2020"

带校验的正则替换

如果还要确保格式和日期合法性,可以进一步增强:

function convertDateFormatRegexWithValidation(dateStr) {
  // 先校验格式:月份是01-12,日期是01-31,年份是4位数字
  const regex = /^([01]\d)\/([0-3]\d)\/(\d{4})$/;
  const match = dateStr.match(regex);
  
  if (!match) {
    throw new Error('日期格式不正确,请输入MM/DD/YYYY格式');
  }
  
  const [, month, day, year] = match;
  // 再用Date对象校验日期是否真实存在
  const date = new Date(`${month}/${day}/${year}`);
  if (isNaN(date.getTime()) || 
      date.getFullYear() !== parseInt(year) || 
      date.getMonth() + 1 !== parseInt(month) || 
      date.getDate() !== parseInt(day)) {
    throw new Error('该日期不存在');
  }
  
  return `${day}/${month}/${year}`;
}

// 测试
console.log(convertDateFormatRegexWithValidation('02/16/2020')); // 输出 "16/02/2020"
总结
  • 若输入格式绝对规范且无需校验:选字符串拆分法,速度最快。
  • 若需要确保日期真实有效:选结合Date对象的校验法,安全性最高。
  • 若需要批量替换文本中的日期:选正则表达式法,灵活性最强。

内容的提问来源于stack exchange,提问作者Jacky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:19:05