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

JavaScript中如何获取dd.mm.yyyy格式字符串并按用户地区转换?

处理dd.mm.yyyy格式字符串的地区化转换

你完全可以借助JavaScript内置的Date和Intl.DateTimeFormat实现需求,不需要自行编写转换器。核心分为两步:先将输入的dd.mm.yyyy字符串解析为合法的Date对象,再通过Intl.DateTimeFormat根据目标地区生成对应格式的日期字符串。

1. 解析dd.mm.yyyy格式字符串为Date对象

由于JavaScript的Date构造函数默认不支持直接解析dd.mm.yyyy格式,需要手动拆分字符串并转换为符合Date要求的参数(注意月份是0基索引,需要减1):

function parseDdMmYyyy(dateStr) {
  const [day, month, year] = dateStr.split('.').map(Number);
  const date = new Date(year, month - 1, day);
  
  // 可选:验证日期合法性,避免无效输入(如32.13.2023)
  if (date.getDate() !== day || date.getMonth() + 1 !== month || date.getFullYear() !== year) {
    throw new Error('无效的日期格式');
  }
  return date;
}

2. 根据目标地区格式化日期

使用Intl.DateTimeFormat指定目标地区的locale,并配置日期组件的显示格式,即可生成对应地区的日期字符串:

// 示例输入
const inputDate = '25.12.2023';
const dateObj = parseDdMmYyyy(inputDate);

// 俄语地区格式(дд.мм.гггг)
const ruFormat = new Intl.DateTimeFormat('ru-RU', {
  day: '2-digit',
  month: '2-digit',
  year: 'numeric'
});
console.log(ruFormat.format(dateObj)); // 输出:25.12.2023

// 英式英语地区格式
const enGbFormat = new Intl.DateTimeFormat('en-GB', {
  day: '2-digit',
  month: '2-digit',
  year: 'numeric'
});
console.log(enGbFormat.format(dateObj)); // 输出:25/12/2023

// 中文地区格式
const zhCnFormat = new Intl.DateTimeFormat('zh-CN', {
  day: '2-digit',
  month: '2-digit',
  year: 'numeric'
});
console.log(zhCnFormat.format(dateObj)); // 输出:2023/12/25

关键说明

  • Intl.DateTimeFormat会自动遵循目标地区的日期格式规范,无需手动拼接字符串
  • 如果需要强制使用日.月.年的分隔符格式(而非地区默认的分隔符),可以在配置中添加formatMatcher: 'basic',并手动处理分隔符(不过大部分使用dd.mm.yyyy类格式的地区,默认分隔符就是.)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:06:03