2016-10-06 1 views
2

Я написал плагин JIRA, который использует момент js для форматирования и синтаксического анализа дат. На некоторых установках я получаю странное поведение, когда moment.js имеет короткие имена с конечным периодом.момент js иногда имеет момент.monthsShort() с периодом (точкой) в немецком языке

Откуда моменту.js получить короткие имена? Как добиться того, чтобы всегда получать те же короткие имена?

В настоящее время синтаксический разбор даты, например 3/Okt/16, не выполняется на моем экземпляре Ubuntu, но работает на Mac. Где 3/Okt./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."] 
+0

0 У меня есть две разные версии загрузки момента - мы добавили изменения. синтаксический анализ в 2.13 IIRC. Тем не менее, могу ли я увидеть ваш синтаксический код? Я хочу знать, как вы разбираетесь. Получаете ли вы предупреждение консоли, в котором говорится, что конструкция момента возвращается к дате js? –

+0

Правильно, я проверил версии, а неудачный - 2.13.0, рабочий - 2.6.0. Версия, в моем случае, исходит от самой джиры, и я не могу контролировать, какой будет использоваться. Разбор выполняется таким образом: момент ('3/Okt/16', 'D/MMM/YY'); нет консольных выходов, как вы сказали. –

+0

Я думал, что соглашения Юникода будут ведущим источником спецификации того, что короткие имена. Все они без отстающих периодов. Но может быть, я недостаточно глубоко в этой теме: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table –

ответ

0

В принципе, я думаю, что вам лучше писать код, который проверяет, является ли момент версии 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" 
+0

Спасибо, Мэгги, действительно любезны помочь этой идее, к сожалению, у нас появилось международное приложение, и я не могу поддерживать это для всех языков. –

+0

Я думаю, что буду использовать длинное представление даты, чтобы передать ее JS. Тогда представление, созданное моментами .js, не будет отражать наш продукт. –

Смежные вопросы