Here's a version of that that will stay in September:
final Calendar cal = Calendar.getInstance();
/**/ cal.set(2021, Calendar.SEPTEMBER, 11, 23, 59, 59);
final String pattern = "yyyy-MMM-dd LL LLL EEE EEEE";
final SimpleDateFormat format1 = new SimpleDateFormat(pattern);
System.out.println("Locale..: " + Locale.getDefault());
System.out.println("Calendar: " + cal.getTime());
System.out.println("Pattern.: " + pattern + " -> " + format1.format(cal.getTime()));
System.out.println("Vendor..: " + ManagementFactory.getRuntimeMXBean().getVmVendor());
System.out.println("VM......: " + ManagementFactory.getRuntimeMXBean().getVmName());
System.out.println("Version.: " + ManagementFactory.getRuntimeMXBean().getSpecVersion());
System.out.println("Build...: " + ManagementFactory.getRuntimeMXBean().getVmVersion());
On a German system it produces the following Outputs for me:
Locale..: de_DE
Calendar: Sat Sep 11 23:59:59 CEST 2021
Pattern.: yyyy-MMM-dd LL LLL EEE EEEE -> 2021-Sept.-11 09 Sep Sa. Samstag
Vendor..: Oracle Corporation
VM......: Java HotSpot(TM) 64-Bit Server VM
Version.: 16
Build...: 16+36-2231
and
Locale..: de_DE
Calendar: Sat Sep 11 23:59:59 CEST 2021
Pattern.: yyyy-MMM-dd LL LLL EEE EEEE -> 2021-Sep-11 09 Sep Sa Samstag
Vendor..: Oracle Corporation
VM......: Java HotSpot(TM) 64-Bit Server VM
Version.: 1.8
Build...: 25.40-b25
Here too, SimpleDateFormat produced different formattings for the Month, but the Spec. is a little vague. It says:
"Month: If the number of pattern letters is 3 or more, the month is interpreted as text"
So far so good, but it qualifies "text" as follows...
"Text: For formatting, if the number of pattern letters is 4 or more,the full form is used; otherwise a short or abbreviated form is used if available."
But for our example, with 3 pattern lettters, quite what that short form is is not clear.
But maybe "L" will help with the Month name?