如何基于Moment.js实现按日期格式片段获取对应分段名称?
解决Moment.js格式片段转日期分段名称的问题
确实,Moment.js没有内置方法直接把格式字符串映射到对应的日期分段名称,不过我们可以手动创建一个映射表来实现这个需求,简单又靠谱。
下面是完整的实现函数:
function getFormatName(format) { // 创建格式片段到分段名称的映射表,覆盖常见格式变体 const formatMap = { 'YYYY': 'years', 'YY': 'years', 'MM': 'months', 'MMM': 'months', 'MMMM': 'months', 'DD': 'days', 'D': 'days', 'HH': 'hours', 'H': 'hours', 'hh': 'hours', 'h': 'hours', 'mm': 'minutes', 'm': 'minutes', 'ss': 'seconds', 's': 'seconds', 'SSS': 'milliseconds', 'SS': 'milliseconds', 'S': 'milliseconds' // 可根据需求扩展更多格式片段 }; // 返回匹配的名称,无匹配则返回null(可自定义默认值) return formatMap[format] || null; }
调用示例:
getFormatName('YYYY')→ 返回'years'getFormatName('MM')→ 返回'months'getFormatName('DD')→ 返回'days'getFormatName('HH')→ 返回'hours'getFormatName('mm')→ 返回'minutes'
补充说明:
- 我把常见的格式变体都加进去了,比如短年份
YY、月份缩写MMM、12小时制的hh等,都统一映射到对应的分段名称,覆盖更多使用场景。 - 如果需要支持其他格式片段,直接在
formatMap里添加新的键值对即可,灵活性拉满。 - 要是传入的格式没有匹配项,函数默认返回
null,你也可以改成返回'unknown'这类自定义默认值,完全看你的需求调整。
内容的提问来源于stack exchange,提问作者Thomas Ferro
相关产品推荐
相关产品推荐

