import java.time.LocalDate;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;

class Main {
    public static void main(String[] args) {
        ZoneId zone = ZoneId.of("America/New_York");

        // Current date-time in America/New_York
        System.out.println(ZonedDateTime.now(zone));

        // A sample winter date-time in America/New_York
        System.out.println(ZonedDateTime.of(LocalDate.of(2023, 01, 14), LocalTime.of(10, 20, 30), zone));

        // A sample summer date-time in America/New_York
        System.out.println(ZonedDateTime.of(LocalDate.of(2023, 06, 14), LocalTime.of(10, 20, 30), zone));

        // Current OffsetDateTime with an offset of 00:00 hours (UTC time)
        System.out.println(OffsetDateTime.now(ZoneOffset.UTC));

        // Current OffsetDateTime with an offset of 05:30 hours
        OffsetDateTime odt = OffsetDateTime.now(ZoneOffset.of("+05:30"));
        System.out.println(odt);
        // The same OffsetDateTime converted to UTC time (will be 05:30 less)
        System.out.println(odt.withOffsetSameInstant(ZoneOffset.UTC));
    }
}