Date And Time In Java – Importance, Local, Current, and Formatting

What is Java Date and Time

The Java Date and Time is a representation of date (year, month, and day (yyyy-MM-dd)).

LocalTime represents a time (hour, minute, second, and nanosecond (HH-mm-ss-ns)).

LocalDateTime is the Date and time that are both shown (yyyy-MM-dd-HH-mm-ss-ns).

Importance of Date and Time in Java

The Date and Time in Java are very important in our lives and are used in every piece of technology in this world.

It is a very important and critical factor in transaction systems, where a single millisecond can cause a change in the system.

Local Date and Time in Java

In Java, the LocalDateTime class is an immutable date-time object that represents a date in the format yyyy-MM-dd-HH-mm-ss. zzz format.

It uses the object class and the ChronoLocalDateTime interface.

We can use LocalDateTime instances whenever we need to show time without a reference to a time zone.

What is the Type of Date in Java

The Date in Java is not only a data types, like int or float, but also a class.

This means it has its own methods it can use.

A Date in Java also has the time, the year, the name of the day of the week, and the time zone.

One of its methods involves getting the time from the Date object.

Without further ado, I will further explain How to Set Date and Time in Java with some basic examples in order for you to easily understand the topic.

Date In Java

A Date In Java is a class that can be found in the java.util package.

This class holds the current date and time.

The Date Class In Java has two constructors, which are listed in the table below.

#Constructor & Description
1Date( )
This constructor initializes the object with the current date and time.
2Date(long millisec)
This constructor accepts an argument that equals the number of milliseconds that have elapsed since midnight, January 1, 1970.
Two Constructors Of Date In Java

The methods of the Date Class In Java are listed in the table below.

#Method & Description
1boolean after(Date date)
Returns true if the invoking Date object contains a date that is later than the one specified by date, otherwise, it returns false.
2boolean before(Date date)
Returns true if the invoking Date object contains a date that is earlier than the one specified by date, otherwise, it returns false.
3Object clone( )
Duplicates the invoking Date object.
4int compareTo(Date date)
Compares the value of the invoking object with that of date. Returns 0 if the values are equal. Returns a negative value if the invoking object is earlier than date. Returns a positive value if the invoking object is later than date.
5int compareTo(Object obj)
Operates identically to compareTo(Date) if obj is of class Date. Otherwise, it throws a ClassCastException.
6boolean equals(Object date)
Returns true if the invoking Date object contains the same time and date as the one specified by date, otherwise, it returns false.
7long getTime( )
Returns the number of milliseconds that have elapsed since January 1, 1970.
8int hashCode( )
Returns a hash code for the invoking object.
9void setTime(long time)
Sets the time and date as specified by time, which represents an elapsed time in milliseconds from midnight, January 1, 1970.
10String toString( )
Converts the invoking Date object into a string and returns the result.
Methods Of The Date Class In Java

How to Get Current Date and Time in Java

This is a very simple way in Java to Get The Current Date And Time In Java.

You can print the current date and time with a simple Date object and the toString() method.

Example Java Program To Get Current Date And Time

// program by Glenn Magada Azuelo
import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display time and date using toString()
      System.out.println(date.toString());
   }
}

Output:

Thu Jul 07 02:23:42 GMT 2022

In order for you to test the Java code provided in this lesson, you must test the code in your code editor.

You can test the above example here! ➡Java Online Compiler 

Date Comparison In Java

Here are three ways you can compare two dates in Java.

  • You can use getTime() to find out how many milliseconds have passed since midnight on January 1, 1970, for both objects and then compare these two values.

  • The before(), after(), and equals methods can be used ( ). Because, for example, the 12th of the month is before the 18th, the new Date (99, 2, 12). before(new Date (99, 2, 18)) returns true.

  • You can use the compareTo() method, which is defined by the Comparable interface and is implemented by Date.

Date Formatting Using SimpleDateFormat In Java

The SimpleDateFormat in Java is a concrete class for formatting and parsing dates based on the user’s location.

SimpleDateFormat lets you start by choosing any user-defined pattern for formatting date and time.

Example Java Program In Date Formatting Using SimpleDateFormat

// program by Glenn Magada Azuelo
import java.util.*;
import java.text.*;

public class DateDemo {

   public static void main(String args[]) {
      Date dNow = new Date( );
      SimpleDateFormat ft = 
      new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

      System.out.println("Current Date: " + ft.format(dNow));
   }
}

Output:

Current Date: Thu 2022.07.07 at 02:44:57 AM GMT

You can test the above example here! ➡Java Online Compiler 

SimpleDateFormat Codes In Java

Use a time pattern string to specify the time format. In this pattern, all ASCII characters are set aside as pattern letters, which are defined as follows:

CharacterDescriptionExample
GEra designatorAD
yYear in four digits2001
MMonth in yearJuly or 07
dDay in month10
hHour in A.M./P.M. (1~12)12
HHour in day (0~23)22
mMinute in hour30
sSecond in minute55
SMillisecond234
EDay in weekTuesday
DDay in year360
FDay of week in month2 (second Wed. in July)
wWeek in year40
WWeek in month1
aA.M./P.M. markerPM
kHour in day (1~24)24
KHour in A.M./P.M. (0~11)10
zTime zoneEastern Standard Time
Escape for textDelimiter
Single quote`
SimpleDateFormat Codes In Java

Date and Time Formatting using Printf in Java

Using the printf method, it’s easy to format the date and time.

As shown in the code below, you can use a two-letter format that starts with t and ends with one of the letters of the table.

Example Program in Date and Time Formatting using Printf

// program by Glenn Magada Azuelo
import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display time and date
      String timeDate = String.format("Current Date/Time : %tc", date );

      System.out.printf(timeDate);
   }
}

Output:

Current Date/Time : Thu Jul 07 02:57:20 GMT 2022

You can test the above example here! ➡Java Online Compiler 

It would be silly to have to put the date in more than once to format each part.

Because of this, a format string can show the index of the argument that needs to be formatted.

The index has to come right after the percent, and it has to end with a $.

Example:

// program created by Glenn Magada Azuelo
import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();
  
      // display time and date
      System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date);
   }
}

Output:

Due date: July 07, 2022

You can test the above example here! ➡Java Online Compiler 

Alternately, you can use the < flag. It means that the same argument as in the previous format specification should be used again.

Example:

// program by Glenn Magada Azuelo
import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();
  
      // display formatted date
      System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
   }
}

Output:

Due date: July 7, 2022

You can test the above example here! ➡Java Online Compiler 

Date and Time Conversion Characters in Java

Here are the characters for converting date-time.

CharacterDescriptionExample
cComplete date and timeMon May 04 09:51:52 CDT 2009
FISO 8601 date2004-02-09
DU.S. formatted date (month/day/year)02/09/2004
T24-hour time18:05:19
r12-hour time06:05:19 pm
R24-hour time, no seconds18:05
YFour-digit year (with leading zeroes)2004
yLast two digits of the year (with leading zeroes)04
CFirst two digits of the year (with leading zeroes)20
BFull month nameFebruary
bAbbreviated month nameFeb
mTwo-digit month (with leading zeroes)02
dTwo-digit day (with leading zeroes)03
eTwo-digit day (without leading zeroes)9
AFull weekday nameMonday
aAbbreviated weekday nameMon
jThree-digit day of year (with leading zeroes)069
HTwo-digit hour (with leading zeroes), between 00 and 2318
kTwo-digit hour (without leading zeroes), between 0 and 2318
ITwo-digit hour (with leading zeroes), between 01 and 1206
lTwo-digit hour (without leading zeroes), between 1 and 126
MTwo-digit minutes (with leading zeroes)05
STwo-digit seconds (with leading zeroes)19
LThree-digit milliseconds (with leading zeroes)047
NNine-digit nanoseconds (with leading zeroes)047000000
PUppercase morning or afternoon markerPM
pLowercase morning or afternoon markerpm
zRFC 822 numeric offset from GMT-0800
ZTime zonePST
sSeconds since 1970-01-01 00:00:00 GMT1078884319
QMilliseconds since 1970-01-01 00:00:00 GMT1078884319047
Date And Time Conversion Characters In Java

There are other useful Date and time classes. Refer to the Java Standard documentation for more information.

Parsing Strings into Dates in Java

The SimpleDateFormat class has some extra methods, such as the parse() method, which tries to parse a string using the format stored in the given SimpleDateFormat object.

Example Java Program using Parse() Method into Dates

// program by Glenn Magada Azuelo
import java.util.*;
import java.text.*;
  
public class DateDemo {

   public static void main(String args[]) {
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 
      String input = args.length == 0 ? "1818-11-11" : args[0]; 

      System.out.print(input + " Parses as "); 
      Date t;
      try {
         t = ft.parse(input); 
         System.out.println(t); 
      } catch (ParseException e) { 
         System.out.println("Unparseable using " + ft); 
      }
   }
}

Output:

1818-11-11 Parses as Wed Nov 11 00:00:00 GMT 1818

You can test the above example here! ➡Java Online Compiler 

Sleeping For a While in Java

You can sleep for a while in Java for as little as one millisecond or as long as your computer lasts.

For instance, the following code would put the computer to sleep for 3 seconds.

Sleeping For a While in Java Example Program

// program by Glenn Magada Azuelo
import java.util.*;
public class SleepDemo {

   public static void main(String args[]) {
      try { 
         System.out.println(new Date( ) + "\n"); 
         Thread.sleep(5*60*10); 
         System.out.println(new Date( ) + "\n"); 
      } catch (Exception e) {
         System.out.println("Got an exception!"); 
      }
   }
}

Output:

Thu Jul 07 07:10:53 GMT 2022 Thu Jul 07 07:10:56 GMT 2022

You can test the above example here! ➡Java Online Compiler 

Measuring Elapsed Time In Java

In Java, we use the System.time() method to figure out how long an operation took in seconds. method called currentTimeMillis().

So let’s rewrite the example from above.

// program by Glenn Magada Azuelo
import java.util.*;
public class DiffDemo {

   public static void main(String args[]) {
      try {
         long start = System.currentTimeMillis( );
         System.out.println(new Date( ) + "\n");
         
         Thread.sleep(5*60*10);
         System.out.println(new Date( ) + "\n");
         
         long end = System.currentTimeMillis( );
         long diff = end - start;
         System.out.println("Difference is : " + diff);
      } catch (Exception e) {
         System.out.println("Got an exception!");
      }
   }
}

Output:

Thu Jul 07 07:22:36 GMT 2022
Thu Jul 07 07:22:39 GMT 2022
Difference is : 3060

GregorianCalendar in Java

GregorianCalendar In Java is a hybrid calendar that works with both the Julian and Gregorian calendars.

It only has one break, which is set to the date when the Gregorian calendar started to be used.

The java. util.

The Calendar class’s getInstance() method gives back a GregorianCalendar with the current date and time in the default locale and time zone.

AD and BC are the two parts of the Gregorian calendar. Based on the Gregorian calendar, these are the two times.

GregorianCalendar objects also have a number of ways to make them.

#Constructor & Description
1GregorianCalendar()
Constructs a default GregorianCalendar using the current time in the default time zone with the default locale.
2GregorianCalendar(int year, int month, int date)
Constructs a GregorianCalendar with the given date set in the default time zone with the default locale.
3GregorianCalendar(int year, int month, int date, int hour, int minute)
Constructs a GregorianCalendar with the given date and time set for the default time zone with the default locale.
4GregorianCalendar(int year, int month, int date, int hour, int minute, int second)
Constructs a GregorianCalendar with the given date and time set for the default time zone with the default locale.
5GregorianCalendar(Locale aLocale)
Constructs a GregorianCalendar based on the current time in the default time zone with the given locale.
6GregorianCalendar(TimeZone zone)
Constructs a GregorianCalendar based on the current time in the given time zone with the default locale.
7GregorianCalendar(TimeZone zone, Locale aLocale)
Constructs a GregorianCalendar based on the current time in the given time zone with the given locale.
GregorianCalendar In Java

Here is a list of a few useful support methods that the GregorianCalendar Class In Java.

#Method & Description
1void add(int field, int amount)
Adds the specified (signed) amount of time to the given time field, based on the calendar’s rules.
2protected void computeFields()
Converts UTC as milliseconds to time field values.
3protected void computeTime()
Overrides Calendar Converts time field values to UTC as milliseconds.
4boolean equals(Object obj)
Compares this GregorianCalendar to an object reference.
5int get(int field)
Gets the value for a given time field.
6int getActualMaximum(int field)
Returns the maximum value that this field could have, given the current date.
7int getActualMinimum(int field)
Returns the minimum value that this field could have, given the current date.
8int getGreatestMinimum(int field)
Returns highest minimum value for the given field if varies.
9Date getGregorianChange()
Gets the Gregorian Calendar change date.
10int getLeastMaximum(int field)
Returns lowest maximum value for the given field if varies.
11int getMaximum(int field)
Returns maximum value for the given field.
12Date getTime()
Gets this Calendar’s current time.
13long getTimeInMillis()
Gets this Calendar’s current time as a long.
14TimeZone getTimeZone()
Gets the time zone.
15int getMinimum(int field)
Returns minimum value for the given field.
16int hashCode()
Overrides hashCode.
17boolean isLeapYear(int year)
Determines if the given year is a leap year.
18void roll(int field, boolean up)
Adds or subtracts (up/down) a single unit of time on the given time field without changing larger fields.
19void set(int field, int value)
Sets the time field with the given value.
20void set(int year, int month, int date)
Sets the values for the fields year, month, and date.
21void set(int year, int month, int date, int hour, int minute)
Sets the values for the fields year, month, date, hour, and minute.
22void set(int year, int month, int date, int hour, int minute, int second)
Sets the values for the fields year, month, date, hour, minute, and second.
23void setGregorianChange(Date date)
Sets the GregorianCalendar change date.
24void setTime(Date date)
Sets this Calendar’s current time with the given Date.
25void setTimeInMillis(long millis)
Sets this Calendar’s current time from the given long value.
26void setTimeZone(TimeZone value)
Sets the time zone with the given time zone value.
27String toString()
Returns a string representation of this calendar.
GregorianCalendar Class In Java

GregorianCalendar in Java Example Program

//program by Glenn Magada Azuelo
import java.util.*;
public class GregorianCalendarDemo {

   public static void main(String args[]) {
      String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", 
         "Oct", "Nov", "Dec"};
      
      int year;
      // Create a Gregorian calendar initialized
      // with the current date and time in the
      // default locale and timezone.
      
      GregorianCalendar gcalendar = new GregorianCalendar();
      
      // Display current time and date information.
      System.out.print("Date: ");
      System.out.print(months[gcalendar.get(Calendar.MONTH)]);
      System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
      System.out.println(year = gcalendar.get(Calendar.YEAR));
      System.out.print("Time: ");
      System.out.print(gcalendar.get(Calendar.HOUR) + ":");
      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
      System.out.println(gcalendar.get(Calendar.SECOND));

      // Test if the current year is a leap year
      if(gcalendar.isLeapYear(year)) {
         System.out.println("The current year is a leap year");
      }else {
         System.out.println("The current year is not a leap year");
      }
   }
}

Output:

Date: Jul 7 2022
Time: 7:46:56
The current year is not a leap year

You can test the above example here! ➡Java Online Compiler 

Conclusion

In conclusion, we have discussed Java Date and Time, covering key concepts such as LocalTime, LocalDateTime, the importance of Date and Time in Java, and the different types of Date in Java.

It delved into the Date class, its constructors, and methods, including examples of how to get the current date and time.

This article covered a range of topics to enhance understanding and application of Date and Time in Java programming.

What’s Next

The next section talks about Regular Expressions In Java programming. At the end of the session, you’ll know what regular expressions are all about in Java.


Leave a Comment