2015-01-09 1 views
0

Я использую MomentJS v2.8.4, и я пытаюсь получить отформатированный дату, как «31.12.2015»MomentJS как получить форматированное, но не локализованное представление?

myDate.format('DD/MM/YYYY') работает отлично, пока я не установлен какой-то «менее английский :)» локализации, например Арабский. Тогда я получаю что-то вроде этого ١٠/٠١/٢٠١٥, что приятно для пользователя, не так хорошо для API.

С MomentJS исходного кода

format : function (inputString) { 
    var output = formatMoment(this, inputString || moment.defaultFormat); 
    // here I get correct "31/12/2015" format 
    return this.localeData().postformat(output); // this will return localized version 
}, 

функция formatMoment публично не экспортируемого ...

Можете ли вы предложить правильное решение для этого?

+0

Оставьте локализацию установленной на английском языке, или, возможно, есть причина, по которой вы хотите использовать локализацию? – Xotic750

+0

Поделитесь еще чем-нибудь своим кодом, а не фрагментом из библиотеки momentjs. – Xotic750

+0

Какое решение вы выбрали? –

ответ

1

Вы можете сохранить текущую locale() установку в переменной (т.е. сохранить настройки пользователя), а затем явно задать значение locale, так что вы можете получить формат даты правильный для API вызова, затем установите значение locale обратно в сохраненное значение.

Что-то вроде:

var userLocaleSetting = moment.locale(); 
moment.locale('en'); 
var myFormattedDate = myDate.format('DD/MM/YYYY'); 
moment.locale(userLocaleSetting); 
0

Одним из решений может быть возвращать объект с апи и отформатирован пользователем даты.

format : function (inputString) { 
    var api = formatMoment(this, inputString || moment.defaultFormat); 
    // here I get correct "31/12/2015" format 
    var user = this.localeData().postformat(api); // this will return localized version 

    return {api: api, user: user}; 
}, 
+0

Это сработает, но я не хочу разветвлять и редактировать api такой известной библиотеки, как momentjs – Strajk

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