The ZoneRules
class in Java’s Date-Time API is used to encapsulate the set of rules defining how the zone offset varies for a single time zone.
The information in this class is typically derived from the IANA Time Zone Database (TZDB). The rules model the data traditionally contained in the ‘zic’ compiled data files of information from the TZDB.
An instance of ZoneRules
is obtained from a ZoneId
using the ZoneId.getRules()
method.
Here is a simple example of how to use the ZoneRules
class:
package org.kodejava.datetime;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.zone.ZoneRules;
public class ZoneRulesExample {
public static void main(String[] args) {
// Get ZoneId for "Europe/Paris"
ZoneId zoneId = ZoneId.of("Europe/Paris");
System.out.println("ZoneId : " + zoneId);
// Get ZoneRules associated with the ZoneId
ZoneRules zoneRules = zoneId.getRules();
System.out.println("ZoneRules : " + zoneRules);
// Get the standard offset
LocalDateTime localDateTime = LocalDateTime.now();
ZoneOffset offset = zoneRules.getOffset(localDateTime);
System.out.println("Offset for " + localDateTime + " is: " + offset);
}
}
Here we are using LocalDateTime.now()
to get the current time and the getOffset(LocalDateTime)
method on ZoneRules
to find the offset for that particular time. The API guarantees immutability and thread-safety of ZoneRules class.
This example will output:
- The
ZoneId
which will be “Europe/Paris” - The
ZoneRules
for the “Europe/Paris” time zone - The
ZoneOffset
for the currentLocalDateTime
. This offset is the difference in time between the “Europe/Paris” time zone and UTC at the time provided.
Output:
ZoneId : Europe/Paris
ZoneRules : ZoneRules[currentStandardOffset=+01:00]
Offset for 2024-01-19T15:55:14.156977 is: +01:00