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

Angular Material小写日期格式dd/yyyy失效问题咨询

为什么配置yyyy-MM-dd会显示yyyy-03-Tu?

哈哈,这个问题的根源其实是你对Moment.js的格式符理解搞反啦!我来给你理清楚:

首先,你用的MomentDateAdapter是基于Moment.js实现的,它的日期格式规则完全遵循Moment的规范,和你之前的理解有出入:

  • dd 不是月份中的日期,而是星期几的缩写(比如Tu就是Tuesday的缩写)
  • DD才是带前导零的月份日期(01-31)
  • 至于年份部分,yyyy和YYYY在大多数场景下是等价的(都是4位日历年份),你之前说的YYYY是年周对应的年份是对的,但只有当涉及到周相关的计算时才会有差异,日常日期显示用哪个都没问题
  • 另外,年份中的日期是DDD(1-366),这个你之前的理解也错了

回到你的问题:当你在display.dateInput里配置yyyy-MM-dd时,最后的dd被Moment解析成了星期缩写,所以才会出现yyyy-03-Tu这种奇怪的显示(月份是03,后面跟着星期缩写)。而当你换成YYYY-MM-DD时,DD被正确解析为月份中的日期,所以显示就正常了。

给你修正后的配置参考:

export const MY_FORMATS = {
  parse: {
    dateInput: 'LL',
  },
  display: {
    dateInput: 'yyyy-MM-DD', // 这里把dd改成DD
    monthYearLabel: 'YYYY',
    dateA11yLabel: 'LL',
    monthYearA11yLabel: 'YYYY',
  },
};

以后配置Angular Material的日期格式时,记得对照Moment.js的格式规则来,别和其他日期库的规则搞混啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:33:13