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

如何使用JavaScript和jQuery自定义格式化日期并禁用过去日期

日期格式化与禁用过去日期实现方案

日期格式化实现

你提到的目标格式Nov 17, 20021存在年份笔误,以下方案默认按合法四位公历年份处理,使用JS原生Intl.DateTimeFormatAPI即可实现需求,无需引入第三方依赖:

// 日期格式化函数
const formatToTarget = (date) => {
  return new Intl.DateTimeFormat('en-US', {
    year: 'numeric',
    month: 'short',
    day: 'numeric'
  }).format(date)
}

// 测试效果:输入2021年11月17日,输出 Nov 17, 2021
console.log(formatToTarget(new Date(2021, 10, 17)))

禁用过去日期功能实现

原生date类型输入框支持通过min属性限制可选的最小日期,将min设为当日的YYYY-MM-DD格式值即可自动禁止选择过去的日期,改造后的完整代码如下:

const input = document.createElement('input');

input.type = "date"
input.id = "scheduleTime"
input.className = "input-text";

const today = new Date()
// en-CA地区的日期格式默认为YYYY-MM-DD,和date输入框的value要求格式匹配
const todayStr = today.toLocaleDateString('en-CA')
input.value = todayStr
// 设置最小可选日期为今日,实现禁用过去日期
input.min = todayStr

// 监听日期选择事件,可直接拿到格式化后的目标格式值
input.addEventListener('change', (e) => {
  const selectedDate = new Date(e.target.value)
  const targetDateStr = formatToTarget(selectedDate)
  // 此处targetDateStr就是你需要的 Nov 17, 2021 格式结果
  console.log(targetDateStr)
})

补充说明

  • 原生date输入框在页面上的显示格式由浏览器和系统地区决定,实际取值固定为YYYY-MM-DD格式,不影响后续格式化处理
  • Intl.DateTimeFormat兼容性覆盖所有主流现代浏览器,生产环境可直接使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:36:04