Я использую DateFormat, чтобы показать День и Месяц. DateFormat поддерживает MEDIUM, LONG, FULL, у всех есть год. Я хочу удалить год из этого кода, и как я могу добиться этогоКак удалить год в DateFormat follower locale?
SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateInstance(DateFormat.LONG, locale);
sdf.applyPattern(sdf.toPattern().replaceAll("[^\\p{Alpha}]*y+[^\\p{Alpha}]*", ""));
Но я получаю сообщение об ошибке с некоторой местности, как:
bo_CN: སྤྱི་ ལོ་ у MMMM འི་ ཙེས་ d ད
VI: дд 'Нгай' 'tháng' ММ 'Nam' у
se_SE: D '' де мммм 'де' у
Это действительно плохая идея, с помощью Regex пытается удалить год из строки, которая может быть действительно разными для всех локалей в мире. Вы должны в конечном итоге построить свою строку в кусок, добавив только значения, которые вам нужны для StringBuilder – MatPag
Hm, 'SimpleDateFormat' не имеет такой опции, поэтому остается только потенциальное опасное обходное решение, такое как регулярное выражение или подобное. Однако, если вы не возражаете добавить дополнительную зависимость, вы также можете импортировать мою библиотеку Time4A и misc-модуль Time4J, а затем использовать класс 'AnnualDate'. Его [javadoc] (http://time4j.net/javadoc-en/net/time4j/xml/AnnualDate.html) показывает, как достичь локализованного месяца-дня-комбинации без года. –