Java Date and Calendar examples

Calendar

This tutorial shows you how to work with java.util.Date and java.util.Calendar.

1. Java Date Examples

Few examples to work with Date APIs.

Example 1.1 – Convert Date to String.


	SimpleDateFormat sdf = new SimpleDateFormat("dd/M/yyyy");
	String date = sdf.format(new Date()); 
	System.out.println(date); //15/10/2013

Example 1.2 – Convert String to Date.


	SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
	String dateInString = "31-08-1982 10:20:56";
	Date date = sdf.parse(dateInString);
	System.out.println(date); //Tue Aug 31 10:20:56 SGT 1982

P.S Refer to this – SimpleDateFormat JavaDoc for detail date and time patterns.

Example 1.3 – Get current date time


	SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
	Date date = new Date();
	System.out.println(dateFormat.format(date)); //2013/10/15 16:16:39

Example 1.4 – Convert Calendar to Date


	Calendar calendar = Calendar.getInstance();
        Date date =  calendar.getTime();

2. Java Calendar Examples

Few examples to work with Calendar APIs.

Example 2.1 – Get current date time


	SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss");	
	Calendar calendar = new GregorianCalendar(2013,0,31);
	System.out.println(sdf.format(calendar.getTime()));

Output


2013 Jan 31 00:00:00

Example 2.2 – Simple Calendar example


	SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss");	
	Calendar calendar = new GregorianCalendar(2013,1,28,13,24,56);

	int year       = calendar.get(Calendar.YEAR);
	int month      = calendar.get(Calendar.MONTH); // Jan = 0, dec = 11
	int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); 
	int dayOfWeek  = calendar.get(Calendar.DAY_OF_WEEK);
	int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
	int weekOfMonth= calendar.get(Calendar.WEEK_OF_MONTH);

	int hour       = calendar.get(Calendar.HOUR);        // 12 hour clock
	int hourOfDay  = calendar.get(Calendar.HOUR_OF_DAY); // 24 hour clock
	int minute     = calendar.get(Calendar.MINUTE);
	int second     = calendar.get(Calendar.SECOND);
	int millisecond= calendar.get(Calendar.MILLISECOND);
		
	System.out.println(sdf.format(calendar.getTime()));
		
	System.out.println("year \t\t: " + year);
	System.out.println("month \t\t: " + month);
	System.out.println("dayOfMonth \t: " + dayOfMonth);
	System.out.println("dayOfWeek \t: " + dayOfWeek);
	System.out.println("weekOfYear \t: " + weekOfYear);
	System.out.println("weekOfMonth \t: " + weekOfMonth);
		
	System.out.println("hour \t\t: " + hour);
	System.out.println("hourOfDay \t: " + hourOfDay);
	System.out.println("minute \t\t: " + minute);
	System.out.println("second \t\t: " + second);
	System.out.println("millisecond \t: " + millisecond);

Output


2013 Feb 28 13:24:56
year 		: 2013
month 		: 1
dayOfMonth 	: 28
dayOfWeek 	: 5
weekOfYear 	: 9
weekOfMonth     : 5
hour 		: 1
hourOfDay 	: 13
minute 		: 24
second 		: 56
millisecond     : 0

Example 2.3 – Set a date manually.


	SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd HH:mm:ss");	
		
	Calendar calendar = new GregorianCalendar(2013,1,28,13,24,56);	
	System.out.println("#1. " + sdf.format(calendar.getTime()));

	//update a date
	calendar.set(Calendar.YEAR, 2014);
	calendar.set(Calendar.MONTH, 11);
	calendar.set(Calendar.MINUTE, 33);
		
	System.out.println("#2. " + sdf.format(calendar.getTime()));

Output


#1. 2013 Feb 28 13:24:56
#2. 2014 Dec 28 13:33:56

Example 2.4– Add or subtract from a date.


	SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMM dd");	
		
	Calendar calendar = new GregorianCalendar(2013,10,28);	
	System.out.println("Date : " + sdf.format(calendar.getTime()));

	//add one month
	calendar.add(Calendar.MONTH, 1);
	System.out.println("Date : " + sdf.format(calendar.getTime()));
		
	//subtract 10 days
	calendar.add(Calendar.DAY_OF_MONTH, -10);
	System.out.println("Date : " + sdf.format(calendar.getTime()));

Output


Date : 2013 Nov 28
Date : 2013 Dec 28
Date : 2013 Dec 18

Example 2.5– Convert Date to Calendar.


        SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
	String dateInString = "22-01-2015 10:20:56";
	Date date = sdf.parse(dateInString);

        Calendar calendar = Calendar.getInstance();
	calendar.setTime(date);

References

  1. Calendar JavaDoc
  2. Date JavaDoc
  3. Java – Convert String to Date
  4. How To Compare Dates In Java

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

avatar
10 Comment threads
2 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
11 Comment authors
Jacob JonesPAVANangadb-brukerlito Recent comment authors
newest oldest most voted
Jacob Jones
Guest
Jacob Jones

Thank You!

PAVAN
Guest
PAVAN

HOW CAN I WRITE PROGRAM TO FIND DAY USING SPRING MVC

anga
Guest
anga

pls explam in how to calculate date to day using calender

db-bruker
Guest
db-bruker

One question about weeks and years :

I tried to use this :
private SimpleDateFormat wwyyyy = new SimpleDateFormat(“wwyyyy”);

But this fails terribly for dates late in the year that belongs to the first week of next year…
e.g 29-31. 12 2014 belongs to week 01 in 2015, but the date-format gives “012014”…

What do you do to get the correct week/year-combination for this years three last days ?

db-bruker
Guest
db-bruker

Actually I found the answer on another page.
When using weeks with years, I should use
private SimpleDateFormat wwyyyy = new SimpleDateFormat(“wwYYYY”); in order to get the correct year for the week…

lito
Guest
lito

Hola a todos alguíen me auida con este ejercicio de java en netbeans. Es tracta de fer un programa en Java que demani una data i mostri per pantalla el dia següent. És a dir, el programa demanarà tres enters (un dia, un mes i un any) i mostrarà quin és el dia següent en el mateix format (dia, mes i any). El programa ha de filtrar que el valor introduït pel dia estigui entre 1 i 31 i que el valor introduït pel mes estigui entre 1 i 12. Podeu suposar que la data introduïda és real (és correcta).… Read more »

Nagendra Singh
Guest
Nagendra Singh

I need to read a log file which contains one day data. Now I need to parse only the last hours data, whatever the last time may be in the log file… I have written a code which will read from the last line of the file.. paths = f1.listFiles(); for(File path:paths) { ReversedLinesFileReader reverse= new ReversedLinesFileReader(path); String line; while ((line = reverse.readLine()) != null) { // process the line. if(line.contains(Constants.INFO)){ System.out.println(“line contains INFO”); } } Now I need to parse only last one hour data. My last two lines of the log file looks like this. INFO: May 30… Read more »

abhi
Guest
abhi

I have one doubt.
Giving just M dont work for me as in if month is Nov i give MMM and for Sept, i have to give MMMM .how can i work this out for any given month…

schmidty
Guest
schmidty

It’s a late response but it may be helpful to some!

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy MMM dd HH:mm:ss”);
Calendar calendar = new GregorianCalendar(2013,0,31);

if(calendar.get(Calendar.MONTH) == 8 /* September */ ) {

sdf = new SimpleDateFormat(“yyyy MMMM dd HH:mm:ss”);}System.out.println(sdf.format(calendar.getTime()));

Joan
Guest
Joan

Nice Blog!

For Calendar creation is better to use the existing constants for the Month to avoid the Tipycal error due to the fact that Calendar uses
0 -> January
1 – > Feberuary

11 -> December

So

Calendar calendar = new GregorianCalendar(2013, Calendar.NOVEMBER, 28);

is prefered over

Calendar calendar = new GregorianCalendar(2013, 10, 28);

SubOptimal
Guest
SubOptimal

Hello,

I would propose to use always DateFormat with setLenient(false) setting. Othwerwise unexpected errors might occur.

SimpleDateFormat sdf = new SimpleDateFormat(“dd-M-yyyy hh:mm:ss”);
sdf.setLenient(false);
String dateInString = “01-13-1982 10:20:56”;

Without calling setLenient(false) the date string would be interpreted as “Sat Jan 01 10:20:56 CET 1983”.

cheers

shggy
Guest
shggy

nice tutorial, really helpful.. thanks….