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

如何用JS将含泰语月份的日期转为英语格式(无需Moment.js)

泰语日期字符串转英文格式问题

我有一个日期字符串21 ต.ค. 2022 06:10 PM,希望将其转换为21 Oct 2022 06:10 PM格式。以下是我编写的JS代码:

var date = "21 ต.ค. 2022 06:10 PM";

var monthNamesThai = ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."];

// var monthNamesEng = ["01", "02", "03", "04", "05", "06",  "07", "08", "09", "10", "11", "12"];
var monthNamesEng = ["Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"];
  
var d = new Date(date);

console.log("Change date " + d + " = " + ('0' + d.getDate()).slice(-2) + " " + monthNamesEng[d.getMonth()] + " " + d.getFullYear());

运行该代码后得到输出:Change date Invalid Date = aN undefined NaN。请问有没有无需使用Moment.js的简易方法,将泰语月份名称转换为英语?


解决方案

核心问题在于new Date()无法识别泰语月份缩写,所以我们需要先把泰语月份替换成对应的英文月份,再处理日期。

方法代码:

const dateStr = "21 ต.ค. 2022 06:10 PM";
const thaiMonths = ["ม.ค.", "ก.พ.", "มี.ค.", "เม.ย.", "พ.ค.", "มิ.ย.", "ก.ค.", "ส.ค.", "ก.ย.", "ต.ค.", "พ.ย.", "ธ.ค."];
const engMonths = ["Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"];

// 提取字符串中的泰语月份
const thaiMonthMatch = dateStr.match(/[ก-ฮ]\.[ก-ฮ]\./);
if (thaiMonthMatch) {
  const thaiMonth = thaiMonthMatch[0];
  const monthIndex = thaiMonths.indexOf(thaiMonth);
  // 替换泰语月份为英文
  const engDateStr = dateStr.replace(thaiMonth, engMonths[monthIndex]);
  
  console.log(engDateStr); // 输出: 21 Oct 2022 06:10 PM

  // 如果需要通过Date对象做更严谨的格式化(可选)
  const date = new Date(engDateStr);
  const formattedDate = `${('0' + date.getDate()).slice(-2)} ${engMonths[date.getMonth()]} ${date.getFullYear()} ${date.toLocaleTimeString('en-US', {hour: '2-digit', minute:'2-digit', hour12: true})}`;
  console.log(formattedDate);
} else {
  console.log("无法识别日期中的泰语月份");
}

说明:

  1. 用正则表达式/[ก-ฮ]\.[ก-ฮ]\./匹配日期字符串中的泰语月份缩写
  2. 通过索引找到对应的英文月份,替换原字符串中的泰语月份
  3. 替换后的字符串已经符合目标格式,可以直接输出;如果需要更严谨的格式校验,再用Date对象处理时间部分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:20:45