Java SimpleDateFormat example - Convert a Date to a formatted String

Summary: This tutorial demonstrates how to use the Java SimpleDateFormat class to convert a Java Date to a formatted String.

The Java SimpleDateFormat class provides lets you easily convert (a) between a Java String to a Date or (b) perform the opposite conversion, from a Java Date to a String. In this article we'll at several different ways to convert a Java Date object to a nicely formatted String object, and in another article we'll look at a couple of nice ways for converting in the opposite direction.

Our first Java SimpleDateFormat example

In our first example, we begin by getting today's date (as a java.util.Date object), and then we'll create a Java SimpleDateFormat object to define the custom format we want for the date after it's converted to a String.

Here's the source code for a complete Java SimpleDateFormat example class that demonstrates this custom date formatting approach:

import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;

 * SimpleDateFormat example: Convert from a Date to a formatted String
 * Get today's date,
 * then convert it to a String, 
 * using the date format we specify.
public class JavaSimpleDateFormatTest
  public static void main(String[] args)
    // (1) get today's date
    Date today = Calendar.getInstance().getTime();

    // (2) create our date "formatter" (the date format we want)
    SimpleDateFormat formatter = new SimpleDateFormat("");

    // (3) create a new String using the date format we want
    String folderName = formatter.format(today);
    // (4) this prints "Folder Name = 2009-09-06-08.23.23"
    System.out.println("Folder Name = " + folderName);

As you can see from the comments in the code, the custom date format (or pattern) we specified looked like this:

and the resulting formatted date output looks like this:


This Java source code was taken from an actual program, where we append this formatted date string to the end of a filename, so we can easily look at the filename and tell the date and time each file was created.

SimpleDateFormat - many other custom date formats

As you might guess, you can format a date in many, many different ways. Here are some of the most common custom date formats we've used:

yyyy-MM-dd                 results in    2009-09-06
yyyyMMdd                   results in    20090906
EEE MMM dd hh:mm:ss yyyy   results in    Sun Sep 06 08:32:51 2009

Java SimpleDateFormat - Easily get the date, time, or datetime

On a related note, if you just need to quickly get the date or time in a nice format, the SimpleDateFormat class also offers several nice static convenience methods that make it really easy to get the date, time, or both date and time in just a line or two of Java code.

Here's the complete source code for another class that demonstrates these static methods of the Java SimpleDateFormat class:

import java.util.Calendar;
import java.util.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class JavaSimpleDateFormatTest2
  public static void main(String[] args)

    // prints "Sep 6, 2009"
    DateFormat dateInstance = SimpleDateFormat.getDateInstance();

    // prints "9:03:20 PM"
    DateFormat timeInstance = SimpleDateFormat.getTimeInstance();
    // prints "Sep 6, 2009 9:03:20 PM"
    DateFormat dateTimeInstance = SimpleDateFormat.getDateTimeInstance();


Java SimpleDateFormat formatting options

As you might guess, there are a wealth of Java date formatting options you can use with the Java SimpleDateFormat class to create a formatted String from a given Date instance. These options are all shown on the SimpleDateFormat javadoc page.

The opposite direction: Use SimpleDateFormat to convert from String to Date

If you need to convert in the opposite direction, from a Java String to a Date, here's a link to my Convert a String to a Date using SimpleDateFormat tutorial.

Response to date

"Our first SimpleDateFormat example" is nice one. :)

Post new comment

The content of this field is kept private and will not be shown publicly.