如何使用date-fns库根据月份名称获取对应的月份索引值
date-fns 按月份名称获取月份数值/索引方案
直接使用date-fns内置的parse方法实现月份解析,无需自行维护静态映射字典:
基础用法(英文月份)
import { parse, getMonth } from 'date-fns'; const monthName = 'March'; // 第三个参数为任意合法的基准日期即可,不影响月份解析结果 const parsedDate = parse(monthName, 'MMMM', new Date(2020, 0, 1)); // 获取0基索引(和moment.month()返回值一致,0对应1月,11对应12月) const zeroBasedIndex = getMonth(parsedDate); // 返回 2 // 获取1-12格式的月份数值(和原moment示例format('M')返回值一致) const monthNumber = zeroBasedIndex + 1; // 返回 3
- 若你使用的是缩写月份名(如
Mar),将parse的第二个格式参数改为MMM即可。
多语言适配
如果要解析非英文的月份名称,传入对应locale配置即可,以中文为例:
import { parse, getMonth } from 'date-fns'; import zhCN from 'date-fns/locale/zh-CN'; const monthName = '三月'; const parsedDate = parse(monthName, 'MMMM', new Date(2020, 0, 1), { locale: zhCN }); const zeroBasedIndex = getMonth(parsedDate); // 返回 2
说明
parse方法依赖date-fns内置的locale资源做月份匹配,完全不需要自行维护静态字典,符合需求。第三个参数仅作为解析时的基准兜底值,不需要提前持有任何额外的日期信息,随便传入任意合法日期即可,不会影响最终的月份解析结果。
内容的提问来源于stack exchange,提问作者pk786
相关产品推荐
相关产品推荐

