Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE

1. Introduction

Epoch time, also known as Unix time, is a system for representing dates and times as a single numeric value. It measures the number of milliseconds elapsed since January 1, 1970, at 00:00:00 Coordinated Universal Time (UTC). Epoch time is widely used in computer systems and programming languages for its simplicity and ease of manipulation.

In this tutorial, we’ll explore the conversion of epoch time in milliseconds to LocalDate and LocalDateTime.

2. Converting Epoch Time to LocalDate

To convert epoch time to LocalDate, we need to convert the epoch time in milliseconds to an Instant object.

An Instant represents a point on the timeline in the UTC timezone:

long epochTimeMillis = 1624962431000L; // Example epoch time in milliseconds
Instant instant = Instant.ofEpochMilli(epochTimeMillis);

Once we have the Instant object, we can convert it to a LocalDate object by specifying a timezone using the atZone() method and extracting the date part:

ZoneId zoneId = ZoneId.systemDefault(); // Use the system default time zone
LocalDate localDate = instant.atZone(zoneId).toLocalDate();

Finally, we can output the converted LocalDate object in human-readable format:

System.out.println(localDate); // Output: 2021-06-29

We can format the date using a specific pattern with the DateTimeFormatter class:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = localDate.format(formatter);
System.out.println(formattedDate); // Output: 2021-06-29

We can choose different patterns based on the requirements.

Here’s a representation of the script:

long epochTimeMillis = 1624962431000L; // Example epoch time in milliseconds
Instant instant = Instant.ofEpochMilli(epochTimeMillis);

ZoneId zoneId = ZoneId.systemDefault(); // Use the system default time zone
LocalDate localDate = instant.atZone(zoneId).toLocalDate();

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = localDate.format(formatter);
System.out.println(formattedDate); // Output: 2021-06-29

Using these four steps, we can easily convert epoch time in milliseconds to LocalDate and even specify a format for the output.

3. Converting Epoch Time to LocalDateTime

The steps for converting epoch time in milliseconds to LocalDateTime are similar to the example above for LocalDate. The only difference is we’ll import the LocalDateTime class.

Putting it all together, here’s the script to convert to LocalDateTime:

long epochTimeMillis = 1624962431000L; // Example epoch time in milliseconds
Instant instant = Instant.ofEpochMilli(epochTimeMillis);

ZoneId zoneId = ZoneId.systemDefault(); // Use the system default time zone
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = localDateTime.format(formatter);
System.out.println(formattedDateTime); // Output: 2021-06-29 12:13:51

The script converts epoch time in milliseconds to LocalDateTime, and we can format the date and time using the DateTimeFormatter class.

4. Conclusion

In this article, we’ve explored the conversion of epoch time in milliseconds to LocalDate and LocalDateTime. It’s a fairly straightforward process, and we’ve employed the DateTimeFormatter class to convert the output to a specific date or time format.

The full implementation of this article is available over on GitHub.

Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE
res – REST with Spring (eBook) (everywhere)
Comments are open for 30 days after publishing a post. For any issues past this date, use the Contact form on the site.