Java : ZoneOffset with Examples

ZoneOffset (Java SE 18 & JDK 18) with Examples.
You will find code examples on most ZoneOffset methods.


Summary

A time-zone offset from Greenwich/UTC, such as +02:00.

Class diagram

final var zoneOffset = ZoneOffset.ofHours(-8);
System.out.println(zoneOffset); // -08:00

final var dateTime = OffsetDateTime.of(
        LocalDate.of(2022, 11, 10),
        LocalTime.of(0, 0),
        zoneOffset);

System.out.println(dateTime); // 2022-11-10T00:00-08:00

Fields

static final ZoneOffset MAX

Constant for the maximum supported offset.

System.out.println(ZoneOffset.MAX); // +18:00

static final ZoneOffset MIN

Constant for the minimum supported offset.

System.out.println(ZoneOffset.MIN); // -18:00

static final ZoneOffset UTC

The time-zone offset for UTC, with an ID of 'Z'.

System.out.println(ZoneOffset.UTC); // Z

Fields declared in ZoneId

SHORT_IDS

Please see the link below.

Methods

Temporal adjustInto (Temporal temporal)

Adjusts the specified temporal object to have the same offset as this object.

final var temporal = OffsetDateTime.of(2021, 4, 7, 0, 0, 0, 0, ZoneOffset.ofHours(3));
System.out.println(temporal); // 2021-04-07T00:00+03:00

final var zoneOffset = ZoneOffset.ofHours(-8);
System.out.println(zoneOffset); // -08:00

final var result = zoneOffset.adjustInto(temporal);
System.out.println(result); // 2021-04-07T00:00-08:00
final var temporal = LocalDateTime.of(2021, 4, 7, 12, 30);
System.out.println(temporal); // 2021-04-07T12:30

final var zoneOffset = ZoneOffset.MAX;
System.out.println(zoneOffset); // +18:00

//zoneOffset.adjustInto(temporal); // UnsupportedTemporalTypeException: Unsupported field: OffsetSeconds

int compareTo (ZoneOffset other)

Compares this offset to another offset in descending order.

final var zoneOffset1 = ZoneOffset.ofHours(0);
System.out.println(zoneOffset1); // Z

final var zoneOffset2 = ZoneOffset.UTC;
System.out.println(zoneOffset2); // Z

System.out.println(zoneOffset1.compareTo(zoneOffset2)); // 0
final var zoneOffset1 = ZoneOffset.ofHours(1);
System.out.println(zoneOffset1); // +01:00

final var zoneOffset2 = ZoneOffset.ofHours(2);
System.out.println(zoneOffset2); // +02:00

System.out.println(zoneOffset1.compareTo(zoneOffset2)); // 3600
final var zoneOffset1 = ZoneOffset.ofHoursMinutes(9, 30);
System.out.println(zoneOffset1); // +09:30

final var zoneOffset2 = ZoneOffset.ofHoursMinutes(-9, -30);
System.out.println(zoneOffset2); // -09:30

System.out.println(zoneOffset1.compareTo(zoneOffset2)); // -68400
final var zoneOffset1 = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3);
System.out.println(zoneOffset1); // +01:02:03

final var zoneOffset2 = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3);
System.out.println(zoneOffset2); // +01:02:03

System.out.println(zoneOffset1.compareTo(zoneOffset2)); // 0

boolean equals (Object obj)

Checks if this offset is equal to another offset.

final var zoneOffset1 = ZoneOffset.ofHours(0);
System.out.println(zoneOffset1); // Z

final var zoneOffset2 = ZoneOffset.UTC;
System.out.println(zoneOffset2); // Z

System.out.println(zoneOffset1.equals(zoneOffset2)); // true
final var zoneOffset1 = ZoneOffset.ofHours(1);
System.out.println(zoneOffset1); // +01:00

final var zoneOffset2 = ZoneOffset.ofHours(2);
System.out.println(zoneOffset2); // +02:00

System.out.println(zoneOffset1.equals(zoneOffset2)); // false
final var zoneOffset1 = ZoneOffset.ofHoursMinutes(9, 30);
System.out.println(zoneOffset1); // +09:30

final var zoneOffset2 = ZoneOffset.ofHoursMinutes(-9, -30);
System.out.println(zoneOffset2); // -09:30

System.out.println(zoneOffset1.equals(zoneOffset2)); // false
final var zoneOffset1 = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3);
System.out.println(zoneOffset1); // +01:02:03

final var zoneOffset2 = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3);
System.out.println(zoneOffset2); // +01:02:03

System.out.println(zoneOffset1.equals(zoneOffset2)); // true

static ZoneOffset from (TemporalAccessor temporal)

Obtains an instance of ZoneOffset from a temporal object.

final var temporal = OffsetDateTime.of(2021, 4, 7, 0, 0, 0, 0, ZoneOffset.ofHours(-4));
System.out.println(temporal); // 2021-04-07T00:00-04:00

final var zoneOffset = ZoneOffset.from(temporal);
System.out.println(zoneOffset); // -04:00
final var temporal = ZonedDateTime.of(2021, 4, 7, 12, 30, 45, 0, ZoneId.systemDefault());
System.out.println(temporal); // 2021-04-07T12:30:45-07:00[America/Los_Angeles]

final var zoneOffset = ZoneOffset.from(temporal);
System.out.println(zoneOffset); // -07:00
final var temporal = LocalDateTime.of(2021, 4, 7, 12, 30);
System.out.println(temporal); // 2021-04-07T12:30

//ZoneOffset.from(temporal); // DateTimeException: Unable to obtain ZoneOffset from TemporalAccessor

int get (TemporalField field)

Gets the value of the specified field from this offset as an int.

final var zoneOffset = ZoneOffset.UTC;
System.out.println(zoneOffset); // Z

System.out.println(zoneOffset.get(ChronoField.OFFSET_SECONDS)); // 0

//zoneOffset.get(ChronoField.MINUTE_OF_HOUR); // UnsupportedTemporalTypeException: Unsupported field: MinuteOfHour
final var zoneOffset = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3);
System.out.println(zoneOffset); // +01:02:03

System.out.println(zoneOffset.get(ChronoField.OFFSET_SECONDS)); // 3723

String getId ()

Gets the normalized zone offset ID.

final var zoneOffset = ZoneOffset.UTC;
System.out.println(zoneOffset.getId()); // Z
final var zoneOffset = ZoneOffset.ofHours(-9);
System.out.println(zoneOffset.getId()); // -09:00
final var zoneOffset = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3);
System.out.println(zoneOffset.getId()); // +01:02:03

long getLong (TemporalField field)

Gets the value of the specified field from this offset as a long.

final var zoneOffset = ZoneOffset.UTC;
System.out.println(zoneOffset); // Z

System.out.println(zoneOffset.getLong(ChronoField.OFFSET_SECONDS)); // 0

//zoneOffset.getLong(ChronoField.MINUTE_OF_HOUR); // UnsupportedTemporalTypeException: Unsupported field: MinuteOfHour
final var zoneOffset = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3);
System.out.println(zoneOffset); // +01:02:03

System.out.println(zoneOffset.getLong(ChronoField.OFFSET_SECONDS)); // 3723

ZoneRules getRules ()

Gets the associated time-zone rules.

final var roles = ZoneOffset.UTC.getRules();
System.out.println(roles); // ZoneRules[currentStandardOffset=Z]
final var roles = ZoneOffset.ofHours(2).getRules();
System.out.println(roles); // ZoneRules[currentStandardOffset=+02:00]
final var roles = ZoneOffset.ofHoursMinutes(-9, -30).getRules();
System.out.println(roles); // ZoneRules[currentStandardOffset=-09:30]
final var roles = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3).getRules();
System.out.println(roles); // ZoneRules[currentStandardOffset=+01:02:03]

int getTotalSeconds ()

Gets the total zone offset in seconds.

final var zoneOffset = ZoneOffset.UTC;
System.out.println(zoneOffset); // Z
System.out.println(zoneOffset.getTotalSeconds()); // 0
final var zoneOffset = ZoneOffset.ofHours(2);
System.out.println(zoneOffset); // +02:00
System.out.println(zoneOffset.getTotalSeconds()); // 7200
final var zoneOffset = ZoneOffset.ofHoursMinutes(-9, -30);
System.out.println(zoneOffset); // -09:30
System.out.println(zoneOffset.getTotalSeconds()); // -34200
final var zoneOffset = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3);
System.out.println(zoneOffset); // +01:02:03
System.out.println(zoneOffset.getTotalSeconds()); // 3723

int hashCode ()

A hash code for this offset.

final var zoneOffset = ZoneOffset.UTC;
System.out.println(zoneOffset); // Z
System.out.println(zoneOffset.hashCode()); // 0
final var zoneOffset = ZoneOffset.ofHours(2);
System.out.println(zoneOffset); // +02:00
System.out.println(zoneOffset.hashCode()); // 7200
final var zoneOffset = ZoneOffset.ofHoursMinutes(-9, -30);
System.out.println(zoneOffset); // -09:30
System.out.println(zoneOffset.hashCode()); // -34200
final var zoneOffset = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3);
System.out.println(zoneOffset); // +01:02:03
System.out.println(zoneOffset.hashCode()); // 3723

boolean isSupported (TemporalField field)

Checks if the specified field is supported.

final var zoneOffset = ZoneOffset.ofHours(2);
System.out.println(zoneOffset); // +02:00

System.out.println(zoneOffset.isSupported(ChronoField.OFFSET_SECONDS)); // true
System.out.println(zoneOffset.get(ChronoField.OFFSET_SECONDS)); // 7200

System.out.println(zoneOffset.isSupported(ChronoField.MINUTE_OF_HOUR)); // false
//zoneOffset.get(ChronoField.MINUTE_OF_HOUR); // UnsupportedTemporalTypeException: Unsupported field: MinuteOfHour

static ZoneOffset of (String offsetId)

Obtains an instance of ZoneOffset using the ID.

System.out.println(ZoneOffset.of("Z")); // Z
//ZoneOffset.of("0"); // DateTimeException: Invalid ID for ZoneOffset, invalid format: 0

System.out.println(ZoneOffset.of("+09")); // +09:00
System.out.println(ZoneOffset.of("-08")); // -08:00
System.out.println(ZoneOffset.of("+01:02")); // +01:02
System.out.println(ZoneOffset.of("-01:02:03")); // -01:02:03

static ZoneOffset ofHours (int hours)

Obtains an instance of ZoneOffset using an offset in hours.

System.out.println(ZoneOffset.ofHours(0)); // Z
System.out.println(ZoneOffset.ofHours(1)); // +01:00
System.out.println(ZoneOffset.ofHours(2)); // +02:00

System.out.println(ZoneOffset.ofHours(-1)); // -01:00
System.out.println(ZoneOffset.ofHours(-2)); // -02:00

System.out.println(ZoneOffset.ofHours(18)); // +18:00
//ZoneOffset.ofHours(19); // DateTimeException: Zone offset hours not in valid range

System.out.println(ZoneOffset.ofHours(-18)); // -18:00
//ZoneOffset.ofHours(-19); // DateTimeException: Zone offset hours not in valid range

static ZoneOffset ofHoursMinutes (int hours, int minutes)

Obtains an instance of ZoneOffset using an offset in hours and minutes.

System.out.println(ZoneOffset.ofHoursMinutes(0, 0)); // Z
System.out.println(ZoneOffset.ofHoursMinutes(1, 10)); // +01:10
System.out.println(ZoneOffset.ofHoursMinutes(2, 25)); // +02:25

System.out.println(ZoneOffset.ofHoursMinutes(-3, -30)); // -03:30
System.out.println(ZoneOffset.ofHoursMinutes(-4, -45)); // -04:45

static ZoneOffset ofHoursMinutesSeconds (int hours, int minutes, int seconds)

Obtains an instance of ZoneOffset using an offset in hours, minutes and seconds.

System.out.println(ZoneOffset.ofHoursMinutesSeconds(0, 0, 0)); // Z
System.out.println(ZoneOffset.ofHoursMinutesSeconds(1, 10, 12)); // +01:10:12
System.out.println(ZoneOffset.ofHoursMinutesSeconds(2, 25, 14)); // +02:25:14

System.out.println(ZoneOffset.ofHoursMinutesSeconds(-3, -30, 0)); // -03:30
System.out.println(ZoneOffset.ofHoursMinutesSeconds(-4, 0, -55)); // -04:00:55

static ZoneOffset ofTotalSeconds (int totalSeconds)

Obtains an instance of ZoneOffset specifying the total offset in seconds

System.out.println(ZoneOffset.ofTotalSeconds(0)); // Z
System.out.println(ZoneOffset.ofTotalSeconds(60)); // +00:01
System.out.println(ZoneOffset.ofTotalSeconds(3600)); // +01:00

System.out.println(ZoneOffset.ofTotalSeconds(-2)); // -00:00:02
System.out.println(ZoneOffset.ofTotalSeconds(-3723)); // -01:02:03

<R> R query (TemporalQuery<R> query)

Queries this offset using the specified query.

final var temporalQuery = new TemporalQuery<ZoneOffset>() {
    @Override
    public ZoneOffset queryFrom(TemporalAccessor temporal) {
        final var seconds = temporal.get(ChronoField.OFFSET_SECONDS);
        return ZoneOffset.ofTotalSeconds(-seconds);
    }
};

{
    final var zoneOffset = ZoneOffset.UTC;
    System.out.println(zoneOffset); // Z
    System.out.println(zoneOffset.query(temporalQuery)); // Z
}
{
    final var zoneOffset = ZoneOffset.ofHours(8);
    System.out.println(zoneOffset); // +08:00
    System.out.println(zoneOffset.query(temporalQuery)); // -08:00
}
{
    final var zoneOffset = ZoneOffset.ofHoursMinutesSeconds(-2, -3, -4);
    System.out.println(zoneOffset); // -02:03:04
    System.out.println(zoneOffset.query(temporalQuery)); // +02:03:04
}

ValueRange range (TemporalField field)

Gets the range of valid values for the specified field.

final var zoneOffset = ZoneOffset.UTC;
System.out.println(zoneOffset.range(ChronoField.OFFSET_SECONDS)); // -64800 - 64800
//zoneOffset.range(ChronoField.MINUTE_OF_HOUR); // UnsupportedTemporalTypeException: Unsupported field: MinuteOfHour

String toString ()

Outputs this offset as a String, using the normalized ID.

final var str1 = ZoneOffset.UTC.toString();
System.out.println(str1); // Z

final var str2 = ZoneOffset.ofHours(-9).toString();
System.out.println(str2); // -09:00

final var str3 = ZoneOffset.ofHoursMinutesSeconds(1, 2, 3).toString();
System.out.println(str3); // +01:02:03

Methods declared in ZoneId

getAvailableZoneIds, getDisplayName, normalized, of, ofOffset, systemDefault

Please see the link below.


Related posts

To top of page