使用moment.js分析日语日期字符串

Parse japanese datestring with moment.js

本文关键字:日语 日期 字符串 moment js 使用      更新时间:2023-09-26

如何解析?

'2015年 Oct月10日 (Sat)'

用js时刻?

我一直在尝试

moment('2015年 Oct月10日 (Sat)', ['DD-MM','DD-MMM','YYYY MMMM DD']);

没有用。。

Moment有非常好的国际化支持。然而,你似乎混合使用英文短月名和日文字符。

日语的默认本地化数据以月份为单位。你可以在这里看到短月份名称的加载数据:

moment.locale('ja');
moment.monthsShort()
// ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]

但是,您可以很容易地自定义区域设置数据,如下所述。

moment.locale('ja', {monthsShort: ["Jan月", "Feb月", "Mar月", "Apr月", "May月", "Jun月", "Jul月", "Aug月", "Sep月", "Oct月", "Nov月", "Dec月"]});

现在,当您检查短月数据时,您将看到您提供的值。

现在,所有正常的矩函数都将使用这些数据,所以您可以像这样简单地解析:

moment.locale('ja');
var m = moment('2015年 Oct月10日 (Sat)', 'll');

注意,ll格式不会包含额外的星期几信息,但moment的解析器会原谅这一点。

调整区域设置数据的好处是,您现在还可以使用moment的format函数来创建输出字符串,并且它将使用相同的样式,而不是将其剥离。

删除日语字符后,一切都很好。至少到目前为止我已经测试过了。

var test = moment('2015年 Oct月10日 (Sat)'.match(/[a-zA-Z0-9]/g).join(""),"YYYY-MMM-DD");
test.toLocaleString();
//output : "Sat Oct 10 2015 00:00:00 GMT+0900"

这很好用:

moment('2015年 Oct月10日 (Sat)','YYYY- MMM-DD-');
//                                ^^^

您只是缺少年.-充当"忽略此字符"字符。

moment.locale('ja');
var d = moment().format('今: YYYY年M月D日 (ddd) HH時mm分ss秒');
console.log(d);
-> 今: 2018年10月9日 (火) 11時03分06秒

jsfiddle.net/369shdep/3/