Java's java.util
package provides Date
classes that encapsulate the current date and time. The Date class supports two constructors, as shown in the following table.
serial number | Constructor | describe |
---|---|---|
1 | Date() |
This constructor initializes the object with the current date and time. |
2 | Date(long millisec) |
This constructor accepts a parameter equal to the number of milliseconds that have elapsed since midnight, January 1, 1970. |
Following is the list of methods of the Date class −
serial number | method | describe |
---|---|---|
1 | boolean after(Date date) |
Returns true if the calling Date object contains a date later than the date specified date , otherwise returns false . |
2 | boolean before(Date date) |
Returns true if the calling Date object contains a date earlier than the date specified date, otherwise returns false . |
3 | Object clone( ) |
Copy the called Date object. |
4 | int compareTo(Date date) |
Compares the value of the calling object with the date value of . Returns 0 if the values are equal . Returns a negative value if the calling object is older than date . Returns a positive value if the calling object is later than date . |
5 | int compareTo(Object obj) |
Same as the operation if the obj object is a Date class object . compareTo(Date) Otherwise, it throws ClassCastException . |
6 | boolean equals(Object date) |
Returns true, if the calling Date object contains date t he same time and date as the specified time and date, otherwise false . |
7 | long getTime() |
Returns the number of milliseconds elapsed since January 1, 1970. |
8 | int hashCode() |
Returns the hash code of the calling object. |
9 | void setTime(long time) |
Set time specifies the time and date representing the elapsed time in milliseconds since midnight, January 1, 1970. |
10 | String toString( ) |
Convert the calling Date object to a string and return the result. |
Here's an easy way to get the current date and time in Java. You can use Date
object toString()
methods to print the current date and time as follows −
import java.util.Date;
public class Test {
public static void main(String args[]) {
Date date = new Date();
// display time and date using toString()
System.out.println(date.toString());
}
}
Execute the above sample code and get the following results:
Fri Mar 15 13:00:37 CST 2020
SimpleDateFormat
is a concrete class for formatting and parsing dates in the locale's way. SimpleDateFormat
Used to select from user-defined patterns for datetime formats.
Example
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String args[]) {
Date dNow = new Date();
SimpleDateFormat ft = new SimpleDateFormat("yyyy.MM.dd (E)'at' hh:mm:ss a zzz");
System.out.println("Current Date: " + ft.format(dNow));
SimpleDateFormat ft2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println("Current Datetime: " + ft2.format(dNow));
}
}
Execute the above sample code and get the following results:
Current Date: 2023.01.05 (Thu)at 12:43:45 PM UTC
Current Datetime: 2023-01-05 12:43:45
DateFormat format code
To specify a time format, use a time pattern string. In this mode, all ASCII letters are reserved 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 is done using printf
methods. Use the two-letter format, t
beginning with and ending with a letter of the form, as shown in the code below.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String args[]) {
// Instantiate a Date object
Date date = new Date();
// display time and date
String str = String.format("Current Date/Time : %tc", date);
System.out.printf(str);
}
}
Execute the above sample code and get the following results:
Current Date/Time : Thu Jan 05 12:44:52 UTC 2023
It would be somewhat silly to provide the date multiple times to format each part. A string format may indicate the index of the parameter to be formatted.
The index must follow %
and must $
end with .
example
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
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);
}
}
Execute the above sample code and get the following results:
Due date: January 05, 2023
Alternatively, <
flags can be used. It says again to use the same parameters as the previous format specification.
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
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);
}
}
Execute the above sample code and get the following results:
Due date: January 5, 2023
example
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 classes related to dates and times. See the Java Standards documentation for more details.
SimpleDateFormat
The class has some additional methods, in particular parse()
, it is used to parse the string according to the format stored in the given SimpleDateFormat
object.
Example
import java.util.*;
import java.text.*;
public class Test {
public static void main(String args[]) {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
String input = args.length == 0 ? "2021-11-11" : args[0];
System.out.print(input + " Format:");
Date t;
try {
t = ft.parse(input);
System.out.println(t);
} catch (ParseException e) {
System.out.println("Unparseable using " + ft);
}
}
}
Execute the above sample code and get the following results:
2021-11-11Thu Nov 11 00:00:00 UTC 2021
Sleep can occur during any period of the computer's lifecycle. For example, the following program will sleep 3
for seconds -
import java.util.*;
import java.text.*;
public class Test {
public static void main(String args[]) {
try {
System.out.println(new Date());
Thread.sleep(5 * 60 * 10);
System.out.println(new Date());
} catch (Exception e) {
System.out.println("Got an exception!");
}
}
}
Execute the above sample code and get the following results:
Thu Jan 05 12:56:37 UTC 2023
Thu Jan 05 12:56:40 UTC 2023
Sometimes, it may be necessary to measure time points in milliseconds. Rewriting the above example
import java.util.*; import java.text.*; public class Test { public static void main(String args[]) { try { long start = System.currentTimeMillis(); System.out.println(new Date()); Thread.sleep(5 * 60 * 10); System.out.println(new Date()); long end = System.currentTimeMillis(); long diff = end - start; System.out.println("
Difference is: " + diff); } catch (Exception e) { System.out.println("Got an exception!"); } } }
Execute the above sample code and get the following results:
Thu Jan 05 12:58:40 UTC 2023
Thu Jan 05 12:58:43 UTC 2023
Difference is: 3115
Gregorian Calendar is a concrete implementation of a Calendar class that implements the normal Gregorian calendar with which we are familiar. Here we are just learn the methods of Gregorian Calenar class. More about Breborian calendar you can read at Java documentation for this.
The getInstance( ) method of Calendar returns a Gregorian Calendar initialized with the current date and time in the default locale and time zone. Gregorian Calendar defines two fields: AD and BC. These represent the two eras defined by the Gregorian calendar.
There are also several constructors for GregorianCalendar objects −
Sr.No. | Constructor & Description |
---|---|
1 |
GregorianCalendar() Create a default Gregorian Calendar using the current time in the default time zone with the default locale. |
2 |
GregorianCalendar(int year, int month, int date) Create a Gregorian Calendar 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) Create a Gregorian Calendar 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) Create a Gregorian Calendar with the given date and time set for the default time zone with the default locale. |
5 |
GregorianCalendar(Locale aLocale) Create a Gregorian Calendar based on the current time in the default time zone with the given locale. |
6 |
GregorianCalendar(TimeZone zone) Create a Gregorian Calendar based on the current time in the given time zone with the default locale. |
7 |
GregorianCalendar(TimeZone zone, Locale aLocale) Create a Gregorian Calendar based on the current time in the given time zone with the given locale. |
Below are the the list of few useful support methods provided by Gregorian Calendar class
Sr.No. | 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. |