Let's get started with a Microservice Architecture with Spring Cloud:
Get the Current Date and Time in Java
Last updated: January 8, 2024
1. Introduction
In this tutorial, we’ll explore how to work with dates and times in Java 8+ and prior environments. We’ll start by covering the modern Java 8+ java.time package, then look at legacy approaches for working with dates before Java 8.
2. Current Date
First, let’s use java.time.LocalDate to get the current system date:
LocalDate localDate = LocalDate.now();
To get the date in any other timezone we can use LocalDate.now(ZoneId):
LocalDate localDate = LocalDate.now(ZoneId.of("GMT+02:30"));
We can also use java.time.LocalDateTime to get an instance of LocalDate:
LocalDateTime localDateTime = LocalDateTime.now();
LocalDate localDate = localDateTime.toLocalDate();
3. Current Time
With java.time.LocalTime, let’s retrieve the current system time:
LocalTime localTime = LocalTime.now();
To get the current time in a specific time zone, we can use LocalTime.now(ZoneId):
LocalTime localTime = LocalTime.now(ZoneId.of("GMT+02:30"));
We can also use java.time.LocalDateTime to get an instance of LocalTime:
LocalDateTime localDateTime = LocalDateTime.now();
LocalTime localTime = localDateTime.toLocalTime();
4. Current Timestamp
Use java.time.Instant to get a time stamp from the Java epoch. According to the JavaDoc, “epoch-seconds are measured from the standard Java epoch of 1970-01-01T00:00:00Z, where instants after the epoch have positive values:
Instant instant = Instant.now();
long timeStampMillis = instant.toEpochMilli();
We may obtain the number of epoch-seconds seconds:
Instant instant = Instant.now();
long timeStampSeconds = instant.getEpochSecond();
5. Working with Dates and Times Before Java 8
For systems still running pre-Java 8 versions, we often use the java.util and java.sql packages for date and time manipulation.
5.1. Using System Time
To get the current time in milliseconds since the Unix epoch (January 1, 1970, 00:00:00 GMT), we can use the currentTimeMillis() method:
long elapsedMilliseconds = System.currentTimeMillis();
For higher precision, we can use System.nanoTime() to return the current time in nanoseconds, which is useful for calculating intervals:
long elapsedNanosecondsStart = System.nanoTime();
long elapsedNanoseconds = System.nanoTime() - elapsedNanosecondsStart;
5.2. Using java.util.Date
The Date class is used to represent a specific date and time with millisecond precision:
Date currentUtilDate = new Date();
For parsing dates from strings, we can use SimpleDateFormat, which allows us to specify the desired date format:
SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
Date customUtilDate = dateFormatter.parse("30-10-2024 10:11:12");
This flexibility is beneficial for applications that need to work with various date formats.
5.3. Using java.util.Calendar
The Calendar class is more versatile for date manipulations and can accommodate different locales. To get the current date:
Calendar currentUtilCalendar = Calendar.getInstance();
We can easily convert it to a Date object using:
Date currentDate = currentUtilCalendar.getTime();
This class is particularly useful for performing arithmetic operations, like adding or subtracting days.
5.4. Using java.sql.Date
The java.sql.Date class represents a date without time zone information, truncating the time portion. To get the current SQL date:
Date currentSqlDate = new Date(System.currentTimeMillis());
We can create a specific date using the valueOf() method, which requires the format yyyy-[mm-[d]d:
Date customSqlDate = Date.valueOf("2020-01-30");
This class is commonly used in database interactions where only the date is relevant.
5.5. Using java.sql.Time
The java.util.Time class captures the time (hours, minutes, seconds) without any date information:
Time currentSqlTime = new Time(System.currentTimeMillis());
To create a time object from a string, we can use Time.valueOf():
Time customSqlTime = Time.valueOf("10:11:12");
This is useful in scenarios where only the time component is needed, such as scheduling events.
5.6. Using java.sql.Timestamp
The java.sql.Timestamp class combines both date and time, providing nanosecond precision. To create a timestamp:
Timestamp currentSqlTimestamp = new Timestamp(System.currentTimeMillis());
For custom timestamps, we use the valueOf() method with the format yyyy-[m]m-[d]d hh:mm:ss[.f…]:
Timestamp customSqlTimestamp = Timestamp.valueOf("2020-01-30 10:11:12.123456789");
6. Conclusion
In this article, we explored various approaches to working with dates and times before and after Java 8+. We learned how to retrieve the current date, time, and timestamp using LocalDate, LocalTime, and Instant. We also delved into the pre-Java 8 classes, including java.util.Date, java.util.Calendar, and java.sql.Date.
The code backing this article is available on GitHub. Once you're logged in as a Baeldung Pro Member, start learning and coding on the project.
















