Java SimpleDateFormat - Java Date Format With Examples

Java SimpleDateFormat and DateFormat classes are used for date formatting. It is mostly used where we need to display or utilize the date and time functionality of Java. Both of these classes are present in com.text package.

  • DateFormat is used for formatting a date into String based on specific locale that is provided as input.
  • The locale is used for specifying the region and language for making the code more locale to the user.
  • The way of writing date is different in different regions of the world. For example, 31st Dec 2017 will be written in India as 31-12-2017 but the same thing will be written in US as 12-31-2017.
  • Date Format classes are not synchronized, it’s recommended to create separate instance for each thread.

Creating DateFormat instance

DateFormat object can be created using the getDateInstance() and getTimeInstance() method of the DateFormat class.

As shown in the example above, the getDateInstance method of DateFormat needs two input parameters, the first parameter specifies the DateFormat to use and the second parameter is the locale.

Java Date Format Example

DateFormat class has a format method which is responsible for formatting.

Output: 3 janv. 2018

In the above example, for creating a DateFormat instance we are using getDateInstance() method.

For performing a time format, we need an instance of time. We will be using getTimeInstance() method for getting an instance of time.

Output: 11:03:01

Java SimpleDateFormat

SimpleDateFormat is very much like DateFormat, the only major difference between them is that SimpleDateFormat can be used for formatting (Date to String conversion) and for parsing (String to Date conversion) with locale support, whereas DateFormat don’t have locale support.

Also, DateFormat is an abstract class that provides base support for date formatting and parsing, SimpleDateFormat is the concrete class that extends DateFormat class.

Creating SimpleDateFormat instance

SimpleDateFormat can be created using the SimpleDateFormat constructor, the constructor is a parametrised constructor and needs a String pattern as the parameter.

In the example above the String pattern is the pattern which will be used to format a date and the output will be generated in that pattern as “MM-dd-yyyy”.

Java SimpleDateFormat Example

In order to parse a date we need to create an instance of SimpleDateFormat using the constructor and then use format() method.

Let us look at an example for formatting date using SimpleDateFormat.

Output: 01-02-2018

In the example above, the date is 2nd January 2018.

For parsing time, we have to change the pattern while creating SimpleDateFormat instance.

Output: 13:03:15.454+0530

In the example above the patters is a time pattern and the formatting for the current time is done based on the pattern.

Parsing Using SimpleDateFormat

Parsing is conversion of String into a java.util.Date instance. We can parse a string to a date instance using parse() method of the SimpleDateFormat class.

For parsing a String to Date we need an instance of the SimpleDateFormat class and a string pattern as input for the constructor of the class.

Output: Sat Dec 01 00:00:00 IST 2018

Now let’s look at SimpleDateFormat example to parse time.

Output: Thu Jan 01 22:00:03 IST 1970

In the example above, because we have not specified any date the program considered epoch as the date i.e 01-Jan-1970.

Java SimpleDateFormat with Locale

We have worked with Locale as part of the DateFormat and we have seen that locales are used based on regions. Let us consider we want to use SimpleDateFormat in French, how to accomplish this?

Output: mardi janvier 2018 14:51:02.354+0530

In the above example, the month and day are named in French based on the locale provided as input.

We have seen different ways of formatting and parsing. Let us have a look at the pattern syntax that should be used for the formatting pattern.

Letter for Pattern Date or Time component Examples
G Era designator AD
y Year 2018(yyyy),18(yy)
M Month in year July(MMMM), Jul(MMM), 07(MM)
w Results in week in year 16
W Results in week in month 3
D Gives the day count in the year 266
d Day of the month 09(dd), 9(d)
F Day of the week in month 4
E Day name in the week Tuesday, Tue
u Day number of week where 1 represents Monday, 2 represents Tuesday and so on 2
a AM or PM marker AM
H Hour in the day (0-23) 12
k Hour in the day (1-24) 23
K Hour in am/pm for 12 hour format (0-11) 0
h Hour in am/pm for 12 hour format (1-12) 12
m Minute in the hour 59
s Second in the minute 35
S Millisecond in the minute 978
z Timezone Pacific Standard Time; PST; GMT-08:00
Z Timezone offset in hours (RFC pattern) -0800
X Timezone offset in ISO format -08; -0800; -08:00

Note: In the patterns above some letters should be used in different number for different results like for month July(MMMM), Jul(MMM), 07(MM) results differently.

Java Date Time Format Example

We discussed about various aspects of DateFormat and SimpleDateFormat. Let us now look at some examples for different formats of date and time.

Pattern Result
MM/dd/yyyy 01/02/2018
dd-M-yyyy hh:mm:ss 02-1-2018 06:07:59
dd MMMM yyyy 02 January 2018
dd MMMM yyyy zzzz 02 January 2018 India Standard Time
E, dd MMM yyyy HH:mm:ss z Tue, 02 Jan 2018 18:07:59 IST

That’s all for java SimpleDateFormat example for date formatting and parsing string to date in java programs.

Reference: SimpleDateFormat API Doc, DateFormat API Doc

By admin

Leave a Reply

%d bloggers like this: