使用Moment.js解析泰语日期格式返回Invalid Date的求助
解决Moment.js解析泰语日期返回Invalid Date的问题
修正后的代码
// 确保已加载泰语区域包 import 'moment/locale/th'; // 或在HTML中引入对应的locale文件 const dateStr = "วันศุกร์ที่ 30 มิถุนายน พ.ศ. 2566"; const formatStr = "วันddddที่ d MMMM พ.ศ. yyyy"; const someday = moment(dateStr, formatStr, "th"); console.log(someday.isValid()); // 应返回true console.log(someday.format()); // 输出对应的公历日期,比如"2023-06-30T00:00:00+07:00"
问题分析
- 星期格式不匹配:原字符串中星期前缀带有"วัน"(泰语"日/天"),而Moment.js泰语区域的
dddd仅对应纯星期名(如"ศุกร์"),因此格式字符串需要补充วัน前缀,写成วันdddd才能匹配"วันศุกร์"。 - 纪元标识与年份格式错误:原字符串中的"พ.ศ."是泰语佛历的标识,格式字符串需要直接包含该文本,同时用
yyyy匹配四位数的佛历年份(Moment.js在泰语区域下会自动处理佛历与公历的转换)。 - 未加载泰语区域包:如果未引入Moment.js的泰语本地化文件,库无法识别泰语的月份、星期名称,会导致解析失败,因此必须确保加载了
moment/locale/th。
内容的提问来源于stack exchange,提问作者P_B
相关产品推荐
相关产品推荐

