'L' шаблон символов в SimpleDateFormat - PullRequest
7 голосов
/ 19 апреля 2011

Я могу попытаться использовать символ 'L' в шаблоне (http://developer.android.com/reference/java/text/SimpleDateFormat.html):

SimpleDateFormat sdf2 = new SimpleDateFormat("d LLLL y 'г'. H:mm:ss z", new Locale("ru", "RU"));

но я получаю это исключение:

java.lang.IllegalArgumentException: Unknown pattern character - 'L'

Есть идеи, почему это происходит?

Ответы [ 3 ]

8 голосов
/ 05 февраля 2013

Шаблон символов L не поддерживается в версиях Android 2.2 и ниже. Я нашел ту же проблему, когда искал решение для форматов даты на славянских языках (см. Мой комментарий к ответу XtopherSD). Я закончил кодировать формат условно:

String fmt = Build.VERSION.SDK_INT <= 8 ? "MMMM yyyy" : "LLLL yyyy";
SimpleDateFormat sdfDate = new SimpleDateFormat(fmt);
2 голосов
/ 16 августа 2012

Конечно, я занимался разработкой с использованием эмулированного устройства API уровня 16, где все работало нормально.Когда я пытался запустить его на эмулируемых устройствах уровня API 7, я получал ту же ошибку.

Страница man для SimpleDateFormat, http://developer.android.com/reference/java/text/SimpleDateFormat.html, говорит, что "L" действительно в течение месяца.Он также говорит, что «M» является действительным.

Я изменил:

private static SimpleDateFormat sdf_myDate = new SimpleDateFormat("LLLL d yyyy HHmm", Locale.US);

на:

private static SimpleDateFormat sdf_myDate= new SimpleDateFormat("MMMM d yyyy HHmm", Locale.US);

, и это работало на API 7 и 16.

0 голосов
/ 10 мая 2011

У меня та же проблема, но с символом «А», после просмотра API SimpleDateFormat, нет буквы «А», просто «а».И это работает правильно, когда я сменил букву «а».Я также не вижу твоего буквы «L», так что, возможно, проблема в этом.

Взгляните сюда

Надеюсь, это полезно.

...