In this tutorial, we will show you how to get the current date time from the new Java 8 java.time.* like LocaldateLocalTimeLocalDateTimeZonedDateTimeInstant and also the legacy date time APIs like Date and Calendar.

Summary

  • For new Java 8 java.time.* APIs , we can use .now() to get the current date-time and format it with DateTimeFormatter.
  • For legacy date-time APIs, we can use new Date() and Calendar.getInstance() to get the current date-time and format it with SimpleDateFormat.

1. Get current date time in Java

The below are some code snippets to display the current date-time in Java.

For java.time.LocalDate, uses LocalDate.now()

  DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu/MM/dd");
  LocalDate localDate = LocalDate.now();
  System.out.println(dtf.format(localDate));            // 2021/03/22

For java.time.localTime, uses LocalTime.now()

  DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
  LocalTime localTime = LocalTime.now();
  System.out.println(dtf.format(localTime));            // 16:37:15

For java.time.LocalDateTime, uses LocalDateTime.now()

  DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss");
  LocalDateTime now = LocalDateTime.now();
  System.out.println(dtf.format(now));                  //  2021/03/22 16:37:15

For java.time.ZonedDateTime, uses ZonedDateTime.now()

  // get current date-time, with system default time zone
  DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss");
  ZonedDateTime now = ZonedDateTime.now();
  System.out.println(dtf.format(now));                  // 2021/03/22 16:37:15
  System.out.println(now.getOffset());                  // +08:00

  // get current date-time, with a specified time zone
  ZonedDateTime japanDateTime = now.withZoneSameInstant(ZoneId.of("Asia/Tokyo"));
  System.out.println(dtf.format(japanDateTime));        // 2021/03/22 17:37:15
  System.out.println(japanDateTime.getOffset());        // +09:00

For java.time.Instant, uses Instant.now()

  Instant now = Instant.now();

  // convert Instant to ZonedDateTime
  DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss");
  ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(now, ZoneId.systemDefault());
  System.out.println(dtfDateTime.format(zonedDateTime));

For java.util.Date, uses new Date()

  DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
  Date date = new Date();
  System.out.println(dateFormat.format(date));           // 2021/03/22 16:37:15

For java.util.Calendar, uses Calendar.getInstance()

  DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
  Calendar cal = Calendar.getInstance();
  System.out.println(dateFormat.format(cal.getTime()));  // 2021/03/22 16:37:15

2. java.time.LocalDate

For the java.time.LocalDate, uses LocalDate.now() to get the current date without a time-zone, and format it with the DateTimeFormatter.

LocalDateExample.java

package com.favtuts.time;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class CurrentDateTime {
    
    public static void main(String[] args) {
        getCurrentDateWithJavaTimeLocalDate();
    }

    static void getCurrentDateWithJavaTimeLocalDate() {

        // For java.time.LocalDate, uses LocalDate.now()
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu/MM/dd");
        LocalDate localDate = LocalDate.now();
        System.out.println(dtf.format(localDate));            // 2022/06/04    

    }    
}

Output

2022/06/04

3. java.time.LocalTime

For the java.time.LocalTime, uses LocalDate.now() to get the current time without a time-zone, and format it with the DateTimeFormatter.

LocalTimeExample.java

package com.favtuts.time;

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class CurrentDateTime {
    
    public static void main(String[] args) {
        getCurrentTimeWithJavaTimeLocalTime();
    }

    static void getCurrentTimeWithJavaTimeLocalTime() {

        // For java.time.localTime, uses LocalTime.now()
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss");
        LocalTime localTime = LocalTime.now();
        System.out.println(dtf.format(localTime));            // 16:37:15

    }
}

Output

16:37:15

4. java.time.LocalDateTime

For java.time.LocalDateTime, uses LocalDateTime.now() to get the current date time without a time-zone, and format it with the DateTimeFormatter.

LocalDateTimeExample.java

package com.favtuts.time;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class CurrentDateTime {
    
    public static void main(String[] args) {
        getCurrentDateTimeWithJavaTimeLocalDateTime();        
    }

    static void getCurrentDateTimeWithJavaTimeLocalDateTime() {

        // For java.time.LocalDateTime, uses LocalDateTime.now()
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss");
        LocalDateTime now = LocalDateTime.now();
        System.out.println(dtf.format(now));                  //  2022/06/04 10:04:09

    }
}

Output

2022/06/04 10:04:09

5. java.time.ZonedDateTime

For java.time.ZonedDateTime, uses ZonedDateTime.now() to get the current date time with the system default time zone, or a specified time zone.

ZonedDateTimeExample.java

package com.favtuts.time;

import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class CurrentDateTime {
    
    public static void main(String[] args) {      
        getCurrentDateTimeWithJavaTimeZonedDateTime();
    }

    static void getCurrentDateTimeWithJavaTimeZonedDateTime() {

        // For java.time.ZonedDateTime, uses ZonedDateTime.now()

        // Get default time zone
        System.out.println(ZoneOffset.systemDefault());         // Asia/Asia/Ho_Chi_Minh
        System.out.println(OffsetDateTime.now().getOffset());   // +07:00


        // get current date-time, with system default time zone
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss");
        ZonedDateTime now = ZonedDateTime.now();
        System.out.println(dtf.format(now));                  // 2022/06/04 10:08:54
        System.out.println(now.getOffset());                  // +07:00

        // get current date-time, with a specified time zone
        ZonedDateTime japanDateTime = now.withZoneSameInstant(ZoneId.of("Asia/Tokyo"));               
        System.out.println(dtf.format(japanDateTime));        // 2022/06/04 12:08:54
        System.out.println(japanDateTime.getOffset());        // +09:00

        japanDateTime = now.withZoneSameInstant(ZoneId.of("Asia/Singapore"));         
        System.out.println(dtf.format(japanDateTime));        // 2022/06/04 11:08:54
        System.out.println(japanDateTime.getOffset());        // +08:00

    }
}

Output

Asia/Ho_Chi_Minh
+07:00
2022/06/04 10:10:49
+07:00
2022/06/04 12:10:49
+09:00
2022/06/04 11:10:49
+08:00

6. java.time.Instant

For java.time.Instant, uses Instant.now() to get the seconds passed since the Unix epoch time (midnight of January 1, 1970 UTC), and later convert to other java.time.* date time classes like LocalDateLocalDateTime and ZonedDateTime.

InstantExample.java

package com.favtuts.time;

import java.time.*;
import java.time.format.DateTimeFormatter;

public class CurrentDateTime {

    private static final DateTimeFormatter dtfDate = DateTimeFormatter.ofPattern("uuuu/MM/dd");
    private static final DateTimeFormatter dtfTime = DateTimeFormatter.ofPattern("HH:mm:ss");
    private static final DateTimeFormatter dtfDateTime = DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss");

    public static void main(String[] args) {
        getCurrentDateTimeWithJavaTimeInstant();
    }

    static void getCurrentDateTimeWithJavaTimeInstant() {

        // seconds passed since the Unix epoch time (midnight of January 1, 1970 UTC)
        Instant now = Instant.now();
        System.out.println(now.toEpochMilli());
        System.out.println(now.getEpochSecond());
        System.out.println(now);   

        // convert Instant to LocalDate
        LocalDate localDate = LocalDate.ofInstant(now, ZoneId.systemDefault());
        System.out.println(dtfDate.format(localDate));

        // convert Instant to localTime
        LocalTime localTime = LocalTime.ofInstant(now, ZoneId.systemDefault());
        System.out.println(dtfTime.format(localTime));

        // convert Instant to LocalDateTime
        LocalDateTime localDateTime = LocalDateTime.ofInstant(now, ZoneId.systemDefault());
        System.out.println(dtfDateTime.format(localDateTime));

        // convert Instant to ZonedDateTime
        ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(now, ZoneId.systemDefault());
        System.out.println(dtfDateTime.format(zonedDateTime));

    }
}

Output

1654313120205
1654313120
2022-06-04T03:25:20.205688Z
2022/06/04
10:25:20
2022/06/04 10:25:20

7. java.util.Date (Legacy)

For the legacy java.util.Date, uses new Date() or new Date(System.currentTimeMillis() to get the current date time, and format it with the SimpleDateFormat.

DateExample.java

package com.favtuts.time;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class CurrentDateTime {

    public static void main(String[] args) {
        getCurrentDateWithLegacyJavaUtilDate();
    }

    static void getCurrentDateWithLegacyJavaUtilDate() {

        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

        Date date = new Date();
        System.out.println(dateFormat.format(date)); // 2021/03/22 16:37:15

        // new Date() actually calls this new Date(long date)
        Date date2 = new Date(System.currentTimeMillis());
        System.out.println(dateFormat.format(date)); // 2021/03/22 16:37:15

    }
}

Output

2022/06/04 10:29:45
2022/06/04 10:29:45

8. java.util.Calendar (Legacy)

For the legacy java.util.Calendar, uses Calendar.getInstance() to get the current date time, and format it with the SimpleDateFormat.

CalendarExample.java

package com.favtuts.time;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class CurrentDateTime {

    public static void main(String[] args) {
        getCurrentDateTimeWithJavaUtilCalendar();
    }    

    static void getCurrentDateTimeWithJavaUtilCalendar() {

        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Calendar cal = Calendar.getInstance();
        System.out.println(dateFormat.format(cal.getTime()));   // 2021/03/22 16:37:15

    }    
}

Output

2022/06/04 10:34:35

Download Source Code

$ git clone https://github.com/favtuts/java-core-tutorials-examples

$ cd java-basic/time

References

Leave a Reply

Your email address will not be published. Required fields are marked *