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
相关产品推荐
相关产品推荐

