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

如何用JavaScript/jQuery将dd/mm/yy日期转为mm/dd/yyyy格式

日期格式转换代码修正方案

原有代码失效原因

JS原生Date构造器解析带斜杠的日期字符串时,默认遵循mm/dd/yy的解析规则,你输入的25/12/21中第一个数字25超出了月份的合法范围(1-12),会直接生成无效日期对象,后续获取日、月、年的操作全部失效。

修正方案

直接手动拆分日期字符串处理,不依赖Date的自动解析,兼容性更强、逻辑可控,代码如下:

// 读取date1的输入值
const date1Val = $('#date1').val().trim();
// 按斜杠拆分得到日、月、两位年
const [day, month, shortYear] = date1Val.split('/');
// 处理两位年份,可根据业务调整规则,此处默认两位年小于50归为20xx,否则归为19xx
const fullYear = +shortYear < 50 ? '20' + shortYear : '19' + shortYear;
// 补零处理月份和日期
const formatMonth = month.length === 1 ? '0' + month : month;
const formatDay = day.length === 1 ? '0' + day : day;
// 拼接成目标格式赋值给date2
$('#date2').val(formatMonth + '/' + formatDay + '/' + fullYear);

如果需要在date1输入完成后自动转换,可以绑定事件触发:

$('#date1').on('change input', function() {
  const date1Val = $(this).val().trim();
  // 格式校验,不符合规则清空date2
  if (!/^\d{1,2}\/\d{1,2}\/\d{2}$/.test(date1Val)) {
    $('#date2').val('');
    return;
  }
  const [day, month, shortYear] = date1Val.split('/');
  const fullYear = +shortYear < 50 ? '20' + shortYear : '19' + shortYear;
  const formatMonth = month.padStart ? month.padStart(2, '0') : (month.length === 1 ? '0' + month : month);
  const formatDay = day.padStart ? day.padStart(2, '0') : (day.length === 1 ? '0' + day : day);
  $('#date2').val(formatMonth + '/' + formatDay + '/' + fullYear);
});

注:上述代码兼容低版本浏览器,无需额外依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:24:03