2015-07-13 6 views
5

Учитывая текстовое поле, я хочу иметь подходящий заполнитель. Типичным заполнителем будет что-то вроде: «mm/dd/yyyy».Использование moment.js, как отобразить текущий формат даты для пользователя?

Однако, я хотел бы использовать даты, соответствующие языковым требованиям, с использованием момента .js.

Это означает, что я буду указывать «l» в качестве формата date.js, но как определить формат даты, который будет использоваться в этом случае time.js?

Пользователь не поймет, что означает «l», поэтому использование этого значения в тексте-заполнителе имеет мало смысла.

В частности, я надеюсь получить доступ к чему-то вроде внутреннего «defaultLongDateFormat». (Хотя это всего лишь по умолчанию - moment.js вероятно, обновляет его или имеет другое отображение во время выполнения для локал известно форматов даты - Я хотел бы получить доступ к этому отображению.)

EDIT:

Там являются множественными downvotes (которые не объясняют, почему они уменьшают его).

Я думаю, это потому, что они Арент»понимание вопроса, так вот некоторые примеры:

Я хочу такую ​​функцию, что: GetFormat („л“) ->„мм/дд/гггг“, или эквивалент для локалей США. getFormat ("l") -> "dd/mm/yyyy" или эквивалент для локалей AU.

не хочу отформатировать заданную дату или проанализировать заданную дату - я просто хочу определить ее удобный формат, заданный в формате angrade moment.js, в частности, для 'l'.

+1

To downvoter: Зачем вы это сделали? Это важный вопрос. – Arafangion

+0

Ваш вопрос запутан. Вы запрашиваете отображение формата текущей даты или самой даты в определенном формате? –

+0

@RobG: Мне верили, что moment.js определяет их? Т.е. я указываю локаль (например, 'en') и строку формата (например, 'L'), а затем format.js форматирует ее? – Arafangion

ответ

4

Я не думаю, что это хорошо подвергается, но если браузер имеет свой язык, выполненный правильно, вы можете сделать что-то вроде этого:

var lang = navigator.languages ? navigator.languages : navigator.language; 

moment().locale(lang).localeData()._longDateFormat['L'] 

Языки ведут себя немного по-разному в зависимости от того, какой браузер вы используете, так не знаю, насколько это надежно.

+0

Это прекрасно - работает как для en_AU, так и для en_US. Я должен буду ожидать, что это может быть удалено в будущем пересмотре, но это, кажется, лучшее, что можно сделать. – Arafangion

+0

Вы протестировали его? Safari, Firefox и Ominweb все ошибаются для меня. Chrome имеет подход с разбросанным оружием с тремя различными версиями en, но один из них был прав. – RobG

+0

Да, и, как я уже сказал, вы должны настроить языковые настройки. –

3

Развейте ответить Адам АиР:

кажется, были выставлен сейчас:

localeData.longDateFormat(dateFormat);

возвращает полный формат сокращенных форматов даты и время LT, L, LL и т.д.

(источник: http://momentjs.com/docs/)

Получить в настоящее время используются региональные данные по moment.localeData()

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