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

JavaScript中DD-MM-YYYY转DD MMM YYYY格式及内置实现方法咨询

实现DD MMM YYYY格式的日期显示(JavaScript内置方案)

嘿,你问到点子上了!JavaScript确实有内置的日期格式化方案,不用自己手动拼接字符串(还能避免你当前代码里可能踩的月份索引坑)。下面给你详细说两种可行的方式:

一、推荐:使用Intl.DateTimeFormat(现代JS原生API)

这是ES6+引入的国际化API,不仅能轻松生成DD MMM YYYY格式,还支持多语言本地化,非常靠谱。

针对你的场景,我们可以直接把它整合到你的jQuery循环里:

// 先定义格式化配置,指定我们要的格式
const dateFormatter = new Intl.DateTimeFormat('en-GB', {
  day: '2-digit',
  month: 'short',
  year: 'numeric'
});

$('#timeTable th:not(:first-child)').each(function(){
  if($(this).attr('Id') === 'totalHours') return;
  
  // 用内置格式化器直接生成目标格式的字符串
  $(this).text(dateFormatter.format(dateObj));
  
  dateObj.setDate(dateObj.getDate() + 1);
});

这里'en-GB'保证月份缩写是英文的(比如Jan、Feb),配置项里:

  • day: '2-digit':两位数的日期(08、15)
  • month: 'short':月份的缩写形式(Jan、Dec)
  • year: 'numeric':四位年份(2018)

二、手动拼接方案(兼容旧环境)

如果需要兼容非常老的浏览器(不支持Intl API),可以手动定义月份缩写数组,然后拼接:

const monthAbbrs = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

$('#timeTable th:not(:first-child)').each(function(){
  if($(this).attr('Id') === 'totalHours') return;
  
  // 注意:getMonth()返回0-11,所以要对应数组的索引
  const day = String(dateObj.getDate()).padStart(2, '0');
  const month = monthAbbrs[dateObj.getMonth()];
  const year = dateObj.getFullYear();
  
  $(this).text(`${day} ${month} ${year}`);
  
  dateObj.setDate(dateObj.getDate() + 1);
});

⚠️ 这里要提醒你:你原来的代码里dateObj.getMonth()返回的是0(1月)到11(12月),直接拼接的话会显示0而不是Jan,这是个容易踩的坑,上面两种方案都帮你规避了这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:41:46