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

如何实现基于locale的字符串转Date对象解析,适配不同地区日期格式

基于locale的日期字符串转Date对象实现方案

直接基于浏览器原生IntlAPI实现,无需引入第三方依赖,可自动适配不同地区的日期排列规则:

function parse(dateStr, locale) {
  // 获取指定locale的日期部件排列顺序
  const dtf = new Intl.DateTimeFormat(locale);
  const formatParts = dtf.formatToParts(new Date());
  // 过滤出年月日的顺序规则
  const partOrder = formatParts
    .filter(item => ['year', 'month', 'day'].includes(item.type))
    .map(item => item.type);

  // 拆分输入的日期字符串,默认支持/、-作为分隔符,可按需扩展
  const inputParts = dateStr.split(/[\/\-]/).map(Number);

  // 按照地区规则映射年月日值
  const dateConfig = {};
  partOrder.forEach((type, index) => {
    dateConfig[type] = inputParts[index];
  });

  // JS Date对象月份从0开始计数,需要减1处理
  return new Date(dateConfig.year, dateConfig.month - 1, dateConfig.day);
}

测试验证

和示例效果完全一致:

parse('1/2/2021', 'en-US') // 输出:Sat Jan 02 2021 00:00:00 GMT+0530
parse('1/2/2021', 'en-IN') // 输出:Mon Feb 01 2021 00:00:00 GMT+0530

补充说明

  • 当前实现默认处理仅包含年月日的短日期格式,如果需要支持带时间、星期的场景,扩展filter的匹配类型即可
  • 可根据业务需求修改拆分字符串的正则,比如需要支持.作为分隔符,将正则调整为/[\/\-\.]/即可
  • 原生IntlAPI兼容所有现代浏览器、Node.js 13及以上版本,如有低版本兼容需求可引入对应polyfill

内容的提问来源于stack exchange,提问作者Anil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:15:08