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 |
---|---|
1 | Date( ) This constructor initializes the object with the current date and time. |
2 | Date(long millisec) This constructor accepts an argument that equals the number of milliseconds that have elapsed since midnight, January 1, 1970. |
The methods of the Date Class In Java are listed in the table below.
# | Method & Description |
---|---|
1 | boolean 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. |
2 | boolean 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. |
3 | Object clone( ) Duplicates the invoking Date object. |
4 | int 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. |
5 | int compareTo(Object obj) Operates identically to compareTo(Date) if obj is of class Date. Otherwise, it throws a ClassCastException. |
6 | boolean 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. |
7 | long getTime( ) Returns the number of milliseconds that have elapsed since January 1, 1970. |
8 | int hashCode( ) Returns a hash code for the invoking object. |
9 | void setTime(long time) Sets the time and date as specified by time, which represents an elapsed time in milliseconds from midnight, January 1, 1970. |
10 | String toString( ) Converts the invoking Date object into a string and returns the result. |
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:
Character | Description | Example |
---|---|---|
G | Era designator | AD |
y | Year in four digits | 2001 |
M | Month in year | July or 07 |
d | Day in month | 10 |
h | Hour in A.M./P.M. (1~12) | 12 |
H | Hour in day (0~23) | 22 |
m | Minute in hour | 30 |
s | Second in minute | 55 |
S | Millisecond | 234 |
E | Day in week | Tuesday |
D | Day in year | 360 |
F | Day of week in month | 2 (second Wed. in July) |
w | Week in year | 40 |
W | Week in month | 1 |
a | A.M./P.M. marker | PM |
k | Hour in day (1~24) | 24 |
K | Hour in A.M./P.M. (0~11) | 10 |
z | Time zone | Eastern Standard Time |
‘ | Escape for text | Delimiter |
“ | Single quote | ` |
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.
Character | Description | Example |
---|---|---|
c | Complete date and time | Mon May 04 09:51:52 CDT 2009 |
F | ISO 8601 date | 2004-02-09 |
D | U.S. formatted date (month/day/year) | 02/09/2004 |
T | 24-hour time | 18:05:19 |
r | 12-hour time | 06:05:19 pm |
R | 24-hour time, no seconds | 18:05 |
Y | Four-digit year (with leading zeroes) | 2004 |
y | Last two digits of the year (with leading zeroes) | 04 |
C | First two digits of the year (with leading zeroes) | 20 |
B | Full month name | February |
b | Abbreviated month name | Feb |
m | Two-digit month (with leading zeroes) | 02 |
d | Two-digit day (with leading zeroes) | 03 |
e | Two-digit day (without leading zeroes) | 9 |
A | Full weekday name | Monday |
a | Abbreviated weekday name | Mon |
j | Three-digit day of year (with leading zeroes) | 069 |
H | Two-digit hour (with leading zeroes), between 00 and 23 | 18 |
k | Two-digit hour (without leading zeroes), between 0 and 23 | 18 |
I | Two-digit hour (with leading zeroes), between 01 and 12 | 06 |
l | Two-digit hour (without leading zeroes), between 1 and 12 | 6 |
M | Two-digit minutes (with leading zeroes) | 05 |
S | Two-digit seconds (with leading zeroes) | 19 |
L | Three-digit milliseconds (with leading zeroes) | 047 |
N | Nine-digit nanoseconds (with leading zeroes) | 047000000 |
P | Uppercase morning or afternoon marker | PM |
p | Lowercase morning or afternoon marker | pm |
z | RFC 822 numeric offset from GMT | -0800 |
Z | Time zone | PST |
s | Seconds since 1970-01-01 00:00:00 GMT | 1078884319 |
Q | Milliseconds since 1970-01-01 00:00:00 GMT | 1078884319047 |
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 |
---|---|
1 | GregorianCalendar() Constructs a default GregorianCalendar using the current time in the default time zone with the default locale. |
2 | GregorianCalendar(int year, int month, int date) Constructs a GregorianCalendar with the given date set in the default time zone with the default locale. |
3 | GregorianCalendar(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. |
4 | GregorianCalendar(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. |
5 | GregorianCalendar(Locale aLocale) Constructs a GregorianCalendar based on the current time in the default time zone with the given locale. |
6 | GregorianCalendar(TimeZone zone) Constructs a GregorianCalendar based on the current time in the given time zone with the default locale. |
7 | GregorianCalendar(TimeZone zone, Locale aLocale) Constructs a GregorianCalendar based on the current time in the given time zone with the given locale. |
Here is a list of a few useful support methods that the GregorianCalendar Class In Java.
# | Method & Description |
---|---|
1 | void add(int field, int amount) Adds the specified (signed) amount of time to the given time field, based on the calendar’s rules. |
2 | protected void computeFields() Converts UTC as milliseconds to time field values. |
3 | protected void computeTime() Overrides Calendar Converts time field values to UTC as milliseconds. |
4 | boolean equals(Object obj) Compares this GregorianCalendar to an object reference. |
5 | int get(int field) Gets the value for a given time field. |
6 | int getActualMaximum(int field) Returns the maximum value that this field could have, given the current date. |
7 | int getActualMinimum(int field) Returns the minimum value that this field could have, given the current date. |
8 | int getGreatestMinimum(int field) Returns highest minimum value for the given field if varies. |
9 | Date getGregorianChange() Gets the Gregorian Calendar change date. |
10 | int getLeastMaximum(int field) Returns lowest maximum value for the given field if varies. |
11 | int getMaximum(int field) Returns maximum value for the given field. |
12 | Date getTime() Gets this Calendar’s current time. |
13 | long getTimeInMillis() Gets this Calendar’s current time as a long. |
14 | TimeZone getTimeZone() Gets the time zone. |
15 | int getMinimum(int field) Returns minimum value for the given field. |
16 | int hashCode() Overrides hashCode. |
17 | boolean isLeapYear(int year) Determines if the given year is a leap year. |
18 | void roll(int field, boolean up) Adds or subtracts (up/down) a single unit of time on the given time field without changing larger fields. |
19 | void set(int field, int value) Sets the time field with the given value. |
20 | void set(int year, int month, int date) Sets the values for the fields year, month, and date. |
21 | void set(int year, int month, int date, int hour, int minute) Sets the values for the fields year, month, date, hour, and minute. |
22 | void 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. |
23 | void setGregorianChange(Date date) Sets the GregorianCalendar change date. |
24 | void setTime(Date date) Sets this Calendar’s current time with the given Date. |
25 | void setTimeInMillis(long millis) Sets this Calendar’s current time from the given long value. |
26 | void setTimeZone(TimeZone value) Sets the time zone with the given time zone value. |
27 | String toString() Returns a string representation of this calendar. |
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.
< PREVIOUS
NEXT >