Combine Separate Date and Time Variables in Java
When working with Java, there might be situations where dates and times need to be handled separately. For example, we might receive a date from a form and a time from another system. To perform meaningful operations, such as scheduling or logging, we will need to combine these into a single LocalDateTime object. This article will explore merging date and time components using Java’s java.time package.
1. The java.time Package Overview
The java.time package was introduced in Java 8 to address the shortcomings of the old Date and Calendar APIs. It includes classes like LocalDate, LocalTime, and LocalDateTime, which represent dates, times, and combinations of both, respectively.
LocalDate: Represents a date without time (year, month, and day).LocalTime: Represents a time without a date (hours, minutes, seconds, and nanoseconds).LocalDateTime: Combines bothLocalDateandLocalTime.
Example Scenario
Let’s assume we are dealing with separate date and time variables, and our goal is to combine them into a LocalDateTime object.
2. Using the LocalDateTime.of() Method
One of the most common ways to combine LocalDate and LocalTime is to use the LocalDateTime.of() method, which is part of the LocalDateTime class.
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
public class CombineDateTimeExample {
public static void main(String[] args) {
// Separate LocalDate and LocalTime
LocalDate date = LocalDate.of(2024, 10, 3);
LocalTime time = LocalTime.of(14, 30, 0);
// Combine them into LocalDateTime
LocalDateTime dateTime = LocalDateTime.of(date, time);
System.out.println("Combined LocalDateTime: " + dateTime);
}
}
This method combines the LocalDate and LocalTime into a single LocalDateTime object by directly passing both as parameters.
LocalDate.of(): Creates aLocalDateobject for October 3, 2024.LocalTime.of(): Creates aLocalTimeobject for 14:30:00 (2:30 PM).LocalDateTime.of(): Combines theLocalDateandLocalTimeinto aLocalDateTimeobject.
The output of the above code will be:
Combined LocalDateTime: 2024-10-03T14:30
3. Using the atTime() Method
Another approach to combining a LocalDate and LocalTime is to use the atTime() method, which is available in the LocalDate class.
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
public class CombineDateTimeAtTimeMethod {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2023, 10, 2);
LocalTime time = LocalTime.of(16, 45, 30);
// Using atTime() method
LocalDateTime dateTime = date.atTime(time);
System.out.println("Combined LocalDateTime using atTime(): " + dateTime);
}
}
This method allows attaching a LocalTime to a LocalDate, forming a LocalDateTime object in a straightforward manner. In this example, date.atTime(time) method attaches the LocalTime to the LocalDate using the atTime() method, resulting in a LocalDateTime object.
The output:
Combined LocalDateTime using atTime(): 2023-10-02T16:45:30
3.1 Using the atDate() Method
Similarly, the LocalTime class provides the atDate() method, which allows you to attach a LocalDate to a LocalTime.
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
public class CombineDateTimeAtDateMethod {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2024, 10, 3);
LocalTime time = LocalTime.of(8, 30, 45);
// Using atDate() method
LocalDateTime dateTime = time.atDate(date);
System.out.println("Combined LocalDateTime using atDate(): " + dateTime);
}
}
With this method, a LocalTime can be combined with a LocalDate to create a LocalDateTime. In this example, time.atDate(date) method attaches the LocalDate to the LocalTime using the atDate() method, producing a LocalDateTime object.
The output:
5. Using DateTimeFormatter for Custom Formatting
Sometimes we may need to display or parse the combined LocalDateTime in a specific format. The DateTimeFormatter class can be used to format and parse date-time objects.
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class CombineDateTimeWithFormatting {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2023, 10, 2);
LocalTime time = LocalTime.of(9, 20, 15);
// Combine date and time
LocalDateTime dateTime = LocalDateTime.of(date, time);
// Format the combined LocalDateTime
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
System.out.println("Formatted LocalDateTime: " + formattedDateTime);
}
}
This method allows formatting the combined LocalDateTime into a custom string format for output or further processing.
DateTimeFormatter.ofPattern(): Creates a custom date-time format (in this case,yyyy/MM/dd HH:mm:ss).dateTime.format(formatter): Formats the combinedLocalDateTimeusing the custom format.
The output:
Formatted LocalDateTime: 2024/10/03 09:20:15
6. Conclusion
In this article, we explored various ways to combine LocalDate and LocalTime into a single LocalDateTime in Java using the java.time package. We covered methods such as LocalDateTime.of(), atTime(), and atDate(), which provides simple ways to merge date and time components. We also showed how to use DateTimeFormatter to format the combined LocalDateTime.
7. Download the Source Code
This article focused on how to combine Local Date and Time in Java.
You can download the full source code of this example here: java combine local date time


