2016-04-05 5 views
0

Это документально here, что с помощью строки «МММ» в течение месяца, используется текст, а не номер:DateTimeFormat.forPattern не будет использовать текст на месяц

Месяц: 3 или более, использовать текст , в противном случае используйте номер.

Я делаю DateTimeFormat.forPattern("dd/MMM/yyyy").print(DateTime.now()) и вместо того, чтобы вернуться 05/Apr/2016, это возвращение 05/4/2016.

Как я могу вернуть его в текстовом формате?

Java 6

+0

должны попробовать дд/мм/гггг –

+1

Не удается воспроизвести. Я просто тестировал свою локаль, и у меня есть «05/avr./2016». Код: 'System.out.println (DateTimeFormat.forPattern (" dd/MMM/yyyy ") .print (DateTime.now());' – Tunaki

+0

@manikantgautam Нет ... 'MM' возвращает число (например, 04) , Это написано в документах, которые вам нужны, чтобы 3 M не отображали текст. Но это не работает. –

ответ

0

Это решает проблему:

DateTimeFormat.forPattern("dd/MMM/yyyy").withLocale(Locale.US).print(DateTime.now()) 

Теперь я получаю 05/Apr/2016

+0

Не могли бы вы рассказать нам свой языковой стандарт по умолчанию? Тогда причина вашей проблемы, вероятно, станет ясна. –

+0

Оба метода getResources(). GetConfiguration(). Locale' и 'Locale.getDefault()' return: ** cachedToStringResult: md_US **, ** countryCode: US **, ** languageCode: md ** –

+1

И это проблема: «md» не является допустимым кодом на языке ISO-639. Просто посмотрите на Google для ISO-639-кодовых таблиц. Поэтому JDK (каждая версия) не знает, как обращаться с ней, и ** не имеет текстовых ресурсов, ссылающихся на этот md-язык **. Факт страны США здесь неважен, потому что поиск текстовых ресурсов начинается с языка и использует страну только как вторичную информацию. Но если вы используете 'Locale.US', то это другой язык, потому что его язык - английский (= en_US). –