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

如何在JavaScript中比较dd/mm/yyyy格式的两个日期大小

问题原因

你原有代码无法运行的核心原因是:Date.parse()对字符串格式的解析规则依赖宿主环境,绝大多数环境默认会将你传入的dd/mm/yyyy格式误判为mm/dd/yyyy,当日期数值大于12时会解析失败返回NaN,无法正常比较大小。

适配dd/mm/yyyy格式的比较方案

你可以先把日期字符串按/拆分,手动传入Date构造函数生成合法日期对象后再比较,Date对象可以直接用大于/小于运算符比较,会自动转换为时间戳运算:

// 封装dd/mm/yyyy格式转Date对象的工具函数
function parseDMY(dateStr) {
  const [day, month, year] = dateStr.split('/').map(Number)
  // 注意Date构造函数的月份从0开始计数,所以月份要减1
  return new Date(year, month - 1, day)
}

// 你的原有逻辑改造
var dateOne = "24/04/1995"
var dateTwo = "24/04/1998"

function myFunction() {
  var d1 = parseDMY(dateOne);
  var d2 = parseDMY(dateTwo);
  if (d1 < d2) {
    alert ("Error! Date did not Match");
  }
}

注意事项

  • 如果需要判断两个日期完全相等,不能直接用==或===比较Date对象,要转成时间戳判断:d1.getTime() === d2.getTime()
  • 如需增加日期合法性校验(比如避免2月30日这类无效输入),可以在parseDMY函数中追加判断,校验生成的Date对象的年月日和输入值是否一致即可
  • 该方案无第三方依赖,兼容所有主流浏览器环境

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:21:02