Java OffsetDateTime

📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.

🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.

▶️ Subscribe to My YouTube Channel (176K+ subscribers): Java Guides on YouTube

▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube

Introduction

OffsetDateTime in Java, part of the java.time package, represents a date-time with an offset from UTC/Greenwich. It is useful for handling date and time with a specific time zone offset.

Table of Contents

  1. What is OffsetDateTime?
  2. Creating OffsetDateTime Instances
  3. Common Methods
  4. Examples of OffsetDateTime
  5. Conclusion

1. What is OffsetDateTime?

OffsetDateTime combines a LocalDateTime and a ZoneOffset, representing a complete date-time with an offset from UTC. It is ideal for scenarios where you need both date-time and offset information.

2. Creating OffsetDateTime Instances

You can create OffsetDateTime instances in several ways:

  • OffsetDateTime.now(): Obtains the current date-time from the system clock with the default offset.
  • OffsetDateTime.of(LocalDateTime dateTime, ZoneOffset offset): Combines a LocalDateTime with a ZoneOffset.
  • OffsetDateTime.parse(CharSequence text): Parses a string to an OffsetDateTime using the ISO-8601 format.

3. Common Methods

  • getOffset(): Returns the ZoneOffset part of this date-time.
  • toLocalDateTime(): Converts this OffsetDateTime to a LocalDateTime.
  • plusDays(long daysToAdd): Returns a copy of this date-time with the specified number of days added.
  • minusHours(long hoursToSubtract): Returns a copy of this date-time with the specified number of hours subtracted.
  • isBefore(OffsetDateTime other): Checks if this date-time is before the specified date-time.
  • isAfter(OffsetDateTime other): Checks if this date-time is after the specified date-time.

4. Examples of OffsetDateTime

Example 1: Getting the Current Date-Time with Offset

This example demonstrates how to get the current date-time with the system's default offset using OffsetDateTime.now().

import java.time.OffsetDateTime; public class CurrentOffsetDateTimeExample { public static void main(String[] args) { OffsetDateTime now = OffsetDateTime.now(); System.out.println("Current Offset Date-Time: " + now); } } 

Output:

Current Offset Date-Time: 2024-06-30T11:58:32.245281+05:30 

Example 2: Creating a Specific OffsetDateTime

Here, we create a specific OffsetDateTime by combining a LocalDateTime with a ZoneOffset.

import java.time.LocalDateTime; import java.time.OffsetDateTime; import java.time.ZoneOffset; public class SpecificOffsetDateTimeExample { public static void main(String[] args) { LocalDateTime dateTime = LocalDateTime.of(2023, 6, 30, 14, 30); ZoneOffset offset = ZoneOffset.ofHours(5); OffsetDateTime offsetDateTime = OffsetDateTime.of(dateTime, offset); System.out.println("Specific Offset Date-Time: " + offsetDateTime); } } 

Output:

Specific Offset Date-Time: 2023-06-30T14:30+05:00 

Example 3: Parsing an OffsetDateTime String

This example shows how to parse a string into an OffsetDateTime using OffsetDateTime.parse(CharSequence text).

import java.time.OffsetDateTime; public class ParseOffsetDateTimeExample { public static void main(String[] args) { OffsetDateTime offsetDateTime = OffsetDateTime.parse("2023-06-30T14:30:00+05:00"); System.out.println("Parsed Offset Date-Time: " + offsetDateTime); } } 

Output:

Parsed Offset Date-Time: 2023-06-30T14:30+05:00 

Example 4: Adding and Subtracting Time

In this example, we demonstrate how to add days and subtract hours from an OffsetDateTime.

import java.time.OffsetDateTime; public class AddSubtractTimeExample { public static void main(String[] args) { OffsetDateTime offsetDateTime = OffsetDateTime.now(); OffsetDateTime nextWeek = offsetDateTime.plusDays(7); OffsetDateTime lastHour = offsetDateTime.minusHours(1); System.out.println("Current Offset Date-Time: " + offsetDateTime); System.out.println("Next Week: " + nextWeek); System.out.println("Last Hour: " + lastHour); } } 

Output:

Current Offset Date-Time: 2024-06-30T11:58:32.556284+05:30 Next Week: 2024-07-07T11:58:32.556284+05:30 Last Hour: 2024-06-30T10:58:32.556284+05:30 

Example 5: Comparing OffsetDateTimes

This example demonstrates how to compare two OffsetDateTime instances using isBefore and isAfter.

import java.time.OffsetDateTime; public class CompareOffsetDateTimesExample { public static void main(String[] args) { OffsetDateTime dateTime1 = OffsetDateTime.parse("2023-06-30T10:00:00+05:00"); OffsetDateTime dateTime2 = OffsetDateTime.parse("2023-07-01T10:00:00+05:00"); System.out.println("Is dateTime1 before dateTime2? " + dateTime1.isBefore(dateTime2)); System.out.println("Is dateTime1 after dateTime2? " + dateTime1.isAfter(dateTime2)); } } 

Output:

Is dateTime1 before dateTime2? true Is dateTime1 after dateTime2? false 

Example 6: Retrieving Offset and LocalDateTime

This example shows how to retrieve the offset and convert the OffsetDateTime to LocalDateTime.

import java.time.OffsetDateTime; public class OffsetDateTimeComponentsExample { public static void main(String[] args) { OffsetDateTime offsetDateTime = OffsetDateTime.now(); System.out.println("Offset: " + offsetDateTime.getOffset()); System.out.println("Local Date-Time: " + offsetDateTime.toLocalDateTime()); } } 

Output:

Offset: +05:30 Local Date-Time: 2024-06-30T11:58:32.760152 

Conclusion

The OffsetDateTime class in Java is used for handling date and time with a specific offset from UTC. It is particularly useful for applications that need to consider time zones or offsets in date-time calculations. Using OffsetDateTime can lead to more accurate and clear handling of date-time data in your Java applications.

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare