React中支持多语言的时间间隔转日期/数值工具库求推荐
推荐工具库及实现方案
1. 利用你正在使用的date-fns
date-fns的parseDuration方法配合本地化配置就能直接实现需求,无需额外引入新库:
import { parseDuration } from 'date-fns'; import { de } from 'date-fns/locale'; // 解析英文格式 parseDuration('2min') / 1000; // 120(转成秒数) parseDuration('2 minutes') / 1000; // 120 // 解析德语格式 parseDuration('2 Minuten', { locale: de }) / 1000; // 120
2. 使用luxon
luxon对本地化时间解析的支持更全面,语法也直观:
import { Duration } from 'luxon'; import 'luxon/src/locale/de'; // 加载德语本地化包 // 英文解析 Duration.fromString('2min').as('seconds'); // 120 Duration.fromString('2 minutes').as('seconds'); // 120 // 德语解析 Duration.fromString('2 Minuten', { locale: 'de' }).as('seconds'); // 120
3. 轻量方案:ms+自定义本地化映射
如果需要极小体积的库,可以用ms(原生仅支持英文),通过自定义替换规则适配多语言:
import ms from 'ms'; // 自定义多语言单位映射 const localeMap = { de: { 'Minute': 'minute', 'Minuten': 'minutes', // 按需添加其他单位 } }; function parseLocalizedDuration(str, locale = 'en') { if (localeMap[locale]) { const mappings = localeMap[locale]; for (const [localKey, enKey] of Object.entries(mappings)) { str = str.replace(new RegExp(localKey, 'gi'), enKey); } } return ms(str) / 1000; // 转换为秒数 } parseLocalizedDuration('2 Minuten', 'de'); // 120 parseLocalizedDuration('2min'); // 120
内容的提问来源于stack exchange,提问作者Vlad Z
相关产品推荐
相关产品推荐

