moment js有时会在德语区域设置中使用带有句号(点)的moment. monthsshort()

moment js sometimes has moment.monthsShort() with period (dot) in german locale

本文关键字:moment monthsshort js 德语 设置 区域      更新时间:2023-09-26

我写了一个JIRA插件,它使用moment js来格式化和解析日期。在一些安装中,当moment.js具有尾随周期的短名称时,我得到了一个奇怪的行为。

moment.js从哪里得到短名?我如何做到总是得到相同的短名称?

目前,像3/Okt/16这样的日期解析在我的Ubuntu实例上失败了,但在Mac上可以工作。/16似乎对两者都有效。

由于该字段是通过Java SimpleDateFormat填充的,因此我没有机会更改传入的格式。

从同一浏览器调用的示例:

JIRA Server hosted on MacOS:
moment.monthsShort()
["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"]
JIRA Server hosted on Ubuntu:
moment.monthsShort()
["Jan.", "Febr.", "Mrz.", "Apr.", "Mai", "Jun.", "Jul.", "Aug.", "Sept.", "Okt.", "Nov.", "Dez."]

基本上,我认为您最好的选择是编写一些代码来检查moment是否为2.13或更高版本,如果是,则使用旧的区域设置数据覆盖。下面的代码可以达到这个效果:

if(moment.version.split('.')[1] > 12) 
{ 
    moment.updateLocale('de',{
    monthsShort:'Jan_Febr_Mrz_Apr_Mai_Jun_Jul_Aug_Sept_Okt_Nov_Dez'.split('_')
    });
}
moment('3/Okt/16','D/MMM/YY').format() //"2016-10-03T00:00:00-07:00"