How to Convert LocalDateTime to Long Timestamp in Java
When working with dates and times in Java, you may often need to convert a LocalDateTime object into a long timestamp, typically representing the number of milliseconds or seconds since the Unix epoch (January 1, 1970, 00:00:00 UTC). This can be useful for database operations, APIs, or any scenario requiring a numerical representation of date and time.
Step-by-Step Conversion Process
Java’s LocalDateTime is a part of the java.time package introduced in Java 8. Since LocalDateTime is time-zone agnostic, converting it to a timestamp requires associating it with a time zone. Here’s how you can achieve this:
1. Using ZoneId and ZonedDateTime
You need to combine LocalDateTime with a ZoneId to create a ZonedDateTime. Once you have a ZonedDateTime, you can convert it to an epoch timestamp.
Example: Converting to Milliseconds
1 | import java.time.LocalDateTime; |
Example: Converting to Seconds
1 | import java.time.LocalDateTime; |
2. Custom Time Zones
If your application operates in a specific time zone, replace "UTC" with the desired ZoneId. For example:
ZoneId.of("America/New_York")ZoneId.of("Europe/London")ZoneId.of("Asia/Shanghai")
This ensures accurate conversion based on local time rules.
3. Handling Different Time Zones
When dealing with users or systems in different time zones, you can pass the relevant ZoneId dynamically. For example:
1 | ZoneId zoneId = ZoneId.systemDefault(); |
This fetches the system’s default time zone.
Summary
Converting LocalDateTime to a long timestamp is a straightforward process:
- Combine
LocalDateTimewith aZoneIdto get aZonedDateTime. - Use the
toInstant()method to get an epoch-basedInstant. - Convert the
Instantto either milliseconds (toEpochMilli()) or seconds (getEpochSecond()).
This approach leverages Java’s modern java.time API, ensuring your code is robust and adheres to best practices.

