import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;

public class Main {
	public static void main(String[] args) {
		ZoneId zoneIdLosAngeles = ZoneId.of("America/Los_Angeles");
		ZonedDateTime zdtNowLosAngeles = ZonedDateTime.now(zoneIdLosAngeles);
		System.out.println(zdtNowLosAngeles);

		// With zone offset but without time zone name
		OffsetDateTime odtNowLosAngeles = zdtNowLosAngeles.toOffsetDateTime();
		System.out.println(odtNowLosAngeles);

		// Truncated up to seconds
		odtNowLosAngeles = odtNowLosAngeles.truncatedTo(ChronoUnit.SECONDS);
		System.out.println(odtNowLosAngeles);

		// ################ A winter date-time ################
		ZonedDateTime zdtLosAngelesWinter = ZonedDateTime
				.of(LocalDateTime.of(LocalDate.of(2021, 11, 20), LocalTime.of(10, 20)), zoneIdLosAngeles);
		System.out.println(zdtLosAngelesWinter); // 2021-11-20T10:20-08:00[America/Los_Angeles]
		System.out.println(zdtLosAngelesWinter.toOffsetDateTime()); // 2021-11-20T10:20-08:00

		// ################ Parsing a date-time string with zone offset ################
		String strDateTime = "2008-11-13T13:23:30-08:00";
		OffsetDateTime odt = OffsetDateTime.parse(strDateTime);
		System.out.println(odt); // 2008-11-13T13:23:30-08:00
	}
}