Используйте предопределенные локализованные форматы и java.time
Locale englishIsrael = Locale.forLanguageTag("en-IL");
DateTimeFormatter shortDateFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT)
.withLocale(englishIsrael);
DateTimeFormatter mediumDateFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM)
.withLocale(englishIsrael);
String dateStringWeHave = "08/08/2019";
LocalDate date = LocalDate.parse(dateStringWeHave, shortDateFormatter);
String dateStringWeWant = date.format(mediumDateFormatter);
System.out.println(dateStringWeWant);
Извините за синтаксис Java, я надеюсь, что вы переведете. Выход:
8 августа 2019
Это не совсем то, что вы просили. Тем не менее, у Java обычно есть хорошее представление о том, какой формат ожидают люди во всем мире, поэтому мое первое предложение - подумать над тем, чтобы согласиться с этим (откровенно 08
и запятая также выглядит немного странно для меня, но что я знаю?)
Другая особенность, которую демонстрирует фрагмент кода, - это использование LocalDate
и DateTimeFormatter
из java.time, современного Java-API даты и времени. Я настоятельно рекомендую java.time для устаревших классов даты и времени, таких как Date
и, в частности, SimpleDateFormat
. Они были плохо спроектированы. Была причина, по которой их заменили.
Если ваши пользователи говорят, что они абсолютно хотят 08, Aug 2019
, вам нужно указать это через строку шаблона формата:
DateTimeFormatter handBuiltFormatter = DateTimeFormatter.ofPattern("dd, MMM uuuu", englishIsrael);
String dateStringWeWant = date.format(handBuiltFormatter);
Теперь мы получаем именно тот результат, который вы запрашивали:
08, август 2019
Ссылка: Учебное пособие по Oracle: Дата и время , объясняющее, как использовать java.time, современный Java-интерфейс даты и времени.