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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:00:49