JDK-8114833 Java-8. , Java-9 ( ). , , () , :
private static final Set<String> LANGUAGES_WITH_STANDALONE_CASE;
static {
Set<String> set = new HashSet<>();
set.add("ru");
LANGUAGES_WITH_STANDALONE_CASE = Collections.unmodifiableSet(set);
}
public static void main(String[] args) throws Exception {
Locale locale = new Locale("en");
DateTimeFormatter formatter =
DateTimeFormatter.ofPattern(
LANGUAGES_WITH_STANDALONE_CASE.contains(locale.getLanguage())
? "LLLL" : "MMMM",
locale
);
System.out.println(LocalDate.now().format(formatter));
}
, , , . JSR-310 (aka java.time -API).
, SimpleDateFormat ( Java-8) :
Locale locale = new Locale("en");
SimpleDateFormat sdf = new SimpleDateFormat("LLLL", locale);
System.out.println(sdf.format(new Date()));
, , java.util.Date.
, "L" API- . , Time4J. , , Time4J JSR-310 ( ):
Locale locale = new Locale("ru");
ChronoFormatter<LocalDate> formatter =
ChronoFormatter.ofPattern(
"LLLL",
PatternType.CLDR,
locale,
PlainDate.axis(TemporalType.LOCAL_DATE)
);
System.out.println(formatter.format(LocalDate.now()));
ConcurrentHashMap .