Parsing and Formatting Dates in Java
It is possible to both parse dates from strings, and format dates
to strings, using Java's
I have covered
SimpleDateFormat in more detail in my
tutorial, in the text SimpleDateFormat.
It is also possible to parse and format dates using the newer Java DateTimeFormatter which is able to parse and format dates from and to the newer date time classes added in Java 8.
Even though both classes for parsing and formatting dates are covered in more detail in their own texts, I will show you a few examples of how to use them below.
Here is an example of how to format and parse a date using the
SimpleDateFormat class works on
Here are two simple examples:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String dateString = format.format( new Date() ); Date date = format.parse ( "2009-12-31" );
The string passed as parameter to the
SimpleDateFormat class is a pattern
that tells how the instance is to parse and format dates. In the example above I used
the pattern "yyyy-MM-dd" which means 4 digits for the year (yyyy), two digits for month (MM)
and two digits for day(dd). The digit groups are separated by dashes (-) because I specified
that in the pattern too, between the digit groups.
Below is a list of the most common pattern letters you can use. For a full list, see the official
JavaDoc for the
y = year (yy or yyyy) M = month (MM) d = day in month (dd) h = hour (0-12) (hh) H = hour (0-23) (HH) m = minute in hour (mm) s = seconds (ss) S = milliseconds (SSS) z = time zone text (e.g. Pacific Standard Time...) Z = time zone, time offset (e.g. -0800)
Here are a few pattern examples, with examples of how each pattern would format or expect to parse a date:
yyyy-MM-dd (2009-12-31) dd-MM-YYYY (31-12-2009) yyyy-MM-dd HH:mm:ss (2009-12-31 23:59:59) HH:mm:ss.SSS (23:59.59.999) yyyy-MM-dd HH:mm:ss.SSS (2009-12-31 23:59:59.999) yyyy-MM-dd HH:mm:ss.SSS Z (2009-12-31 23:59:59.999 +0100)
Another way to format dates is to use the
DateTimeFormatter which works with the newer date time
classes added in Java 8. Here is a
DateTimeFormatter example of formatting a date as a string:
DateTimeFormatter formatter = DateTimeFormatter.BASIC_ISO_DATE; String formattedDate = formatter.format(LocalDate.now()); System.out.println(formattedDate);
As you can see, the
DateTimeFormatter has a few predefined instances you can use. In the example
above we use the
DateTimeFormatter.BASIC_ISO_DATE instance which is configured to parse and format
dates using the ISO date time format.