import java.util.*;
import java.lang.*;
import java.io.*;
import java.time.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) {
        ZoneId zoneId = ZoneId.of("America/Santiago");

        // Date in winter (standard time)
        String winterDate = "2024-07-01T00:00:00-04:00";
        ZonedDateTime winterZDT = ZonedDateTime.parse(winterDate).withZoneSameLocal(zoneId);
        OffsetDateTime winterODT = OffsetDateTime.parse(winterDate);
        System.out.println("Winter 2023 (ZonedDateTime): " + winterZDT + " offset: " + winterZDT.getOffset());
        System.out.println("Winter 2023 (OffsetDateTime): " + winterODT + " offset: " + winterODT.getOffset());

        // Date in summer (daylight saving time DST)
        String summerDate = "2024-12-01T00:00:00-04:00";
        ZonedDateTime summerZDT = ZonedDateTime.parse(summerDate).withZoneSameLocal(zoneId);
        OffsetDateTime summerODT = OffsetDateTime.parse(summerDate);
        System.out.println("\nSummer 2023 (ZonedDateTime): " + summerZDT + " offset: " + summerZDT.getOffset());
        System.out.println("Summer 2023 (OffsetDateTime): " + summerODT + " offset: " + summerODT.getOffset());

        System.out.println("\n=================== Dynamic start of daylight saving time (DST) ====================");
        // Before 2015, when standard and DST were applied normally
        ZonedDateTime winter2014 = ZonedDateTime.parse("2014-07-01T00:00:00Z").withZoneSameLocal(zoneId);
        ZonedDateTime summer2014 = ZonedDateTime.parse("2014-12-01T00:00:00Z").withZoneSameLocal(zoneId);
        System.out.println("Winter 2014: " + winter2014 + " offset: " + winter2014.getOffset());
        System.out.println("Summer 2014: " + summer2014 + " offset: " + summer2014.getOffset());

        // During 2015, when Chile kept DST all year (political decision)
        ZonedDateTime winter2015 = ZonedDateTime.parse("2015-07-01T00:00:00Z").withZoneSameLocal(zoneId);
        ZonedDateTime summer2015 = ZonedDateTime.parse("2015-12-01T00:00:00Z").withZoneSameLocal(zoneId);
        System.out.println("\nWinter 2015: " + winter2015 + " offset: " + winter2015.getOffset());
        System.out.println("Summer 2015: " + summer2015 + " offset: " + summer2015.getOffset());

        // After 2016, when standard and DST were restored
        ZonedDateTime winter2016 = ZonedDateTime.parse("2016-07-01T00:00:00Z").withZoneSameLocal(zoneId);
        ZonedDateTime summer2016 = ZonedDateTime.parse("2016-12-01T00:00:00Z").withZoneSameLocal(zoneId);
        System.out.println("\nWinter 2016: " + winter2016 + " offset: " + winter2016.getOffset());
        System.out.println("Summer 2016: " + summer2016 + " offset: " + summer2016.getOffset());
    }
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: