import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class FormattingIssue {

    private static final String FORMATTING = "E LLL d HH:mm:ss yyyy XX";

    static void formattingCurrentZonedDateTime() {
        var time = Instant.now();
        var datetime = ZonedDateTime.ofInstant(time, ZoneId.systemDefault());
        String formatted = DateTimeFormatter.ofPattern(FORMATTING).format(datetime);
        System.out.println(formatted);
    }

    static void formattingSeptember23ZonedDateTime() {
        var time = LocalDateTime.of(2023, 9, 12, 15, 47, 32, 200);
        var datetime = ZonedDateTime.of(time, ZoneId.systemDefault());
        String formatted = DateTimeFormatter.ofPattern(FORMATTING).format(datetime);
        System.out.println(formatted);
    }

    static void formattingSeptember24ZonedDateTime() {
        var time = LocalDateTime.of(2024, 9, 12, 15, 47, 32, 200);
        var datetime = ZonedDateTime.of(time, ZoneId.systemDefault());
        String formatted = DateTimeFormatter.ofPattern(FORMATTING).format(datetime);
        System.out.println(formatted);
    }

    static void formattingOctoberZonedDateTime() {
        var time = LocalDateTime.of(2023, 10, 17, 22, 49, 38, 251);
        var datetime = ZonedDateTime.of(time, ZoneId.systemDefault());
        String formatted = DateTimeFormatter.ofPattern(FORMATTING).format(datetime);
        System.out.println(formatted);
    }

    static void formattingMonthsZonedDateTime() {
        for (var month = 1; month <= 12; month++) {
            var time = LocalDateTime.of(2023, month, 17, 22, 49, 38, 251);
            var datetime = ZonedDateTime.of(time, ZoneId.systemDefault());
            String formatted = DateTimeFormatter.ofPattern(FORMATTING).format(datetime);
            System.out.println(formatted);
        }
    }

    public static void main(String[] args) {
        Locale.setDefault(Locale.US);
        formattingCurrentZonedDateTime();
        formattingSeptember23ZonedDateTime();
        formattingSeptember24ZonedDateTime();
        formattingOctoberZonedDateTime();
        formattingMonthsZonedDateTime();
    }
}
