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.
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("yyyy-MM-dd-hh.mm.ss");
// (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:
yyyy-MM-dd-hh.mm.ss
and the resulting formatted date output looks like this:
2009-09-06-08.23.23
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.
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
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();
System.out.println(dateInstance.format(Calendar.getInstance().getTime()));
// prints "9:03:20 PM"
DateFormat timeInstance = SimpleDateFormat.getTimeInstance();
System.out.println(timeInstance.format(Calendar.getInstance().getTime()));
// prints "Sep 6, 2009 9:03:20 PM"
DateFormat dateTimeInstance = SimpleDateFormat.getDateTimeInstance();
System.out.println(dateTimeInstance.format(Calendar.getInstance().getTime()));
}
}
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.
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