display Java.util.Date in a specific format

JavaDate

Java Problem Overview


I have the following scenario :

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(dateFormat.parse("31/05/2011"));

gives an output

Tue May 31 00:00:00 SGT 2011

but I want the output to be

31/05/2011 

I need to use parse here because the dates need to be sorted as Dates and not as String.

Any ideas ??

Java Solutions


Solution 1 - Java

How about:

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(dateFormat.format(dateFormat.parse("31/05/2011")));

> 31/05/2011

Solution 2 - Java

You need to go through SimpleDateFormat.format in order to format the date as a string.

Here's an example that goes from String -> Date -> String.

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("31/05/2011");

System.out.println(dateFormat.format(date));   // prints 31/05/2011
//                            ^^^^^^

Solution 3 - Java

Use the SimpleDateFormat.format

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date();
String sDate= sdf.format(date);

Solution 4 - Java

You can use simple date format in Java using the code below

SimpleDateFormat simpledatafo = new SimpleDateFormat("dd/MM/yyyy");
Date newDate = new Date();
String expectedDate= simpledatafo.format(newDate);

Solution 5 - Java

It makes no sense, but:

System.out.println(dateFormat.format(dateFormat.parse("31/05/2011")))

SimpleDateFormat.parse() = // parse Date from String
SimpleDateFormat.format() = // format Date into String

Solution 6 - Java

If you want to simply output a date, just use the following:

System.out.printf("Date: %1$te/%1$tm/%1$tY at %1$tH:%1$tM:%1$tS%n", new Date());

As seen here. Or if you want to get the value into a String (for SQL building, for example) you can use:

String formattedDate = String.format("%1$te/%1$tm/%1$tY", new Date());

You can also customize your output by following the Java API on Date/Time conversions.

Solution 7 - Java

java.time

Here’s the modern answer.

	DateTimeFormatter sourceFormatter = DateTimeFormatter.ofPattern("dd/MM/uuuu");
	DateTimeFormatter displayFormatter = DateTimeFormatter
			.ofLocalizedDate(FormatStyle.SHORT)
			.withLocale(Locale.forLanguageTag("zh-SG"));
	
	String dateString = "31/05/2011";
	LocalDate date = LocalDate.parse(dateString, sourceFormatter);
	System.out.println(date.format(displayFormatter));

Output from this snippet is:

> 31/05/11

See if you can live with the 2-digit year. Or use FormatStyle.MEDIUM to obtain 2011年5月31日. I recommend you use Java’s built-in date and time formats when you can. It’s easier and lends itself very well to internationalization.

If you need the exact format you gave, just use the source formatter as display formatter too:

	System.out.println(date.format(sourceFormatter));

> 31/05/2011

I recommend you don’t use SimpleDateFormat. It’s notoriously troublesome and long outdated. Instead I use java.time, the modern Java date and time API.

To obtain a specific format you need to format the parsed date back into a string. Netiher an old-fashioned Date nor a modern LocalDatecan have a format in it.

Link: Oracle tutorial: Date Time explaining how to use java.time.

Solution 8 - Java

You already has this (that's what you entered) parse will parse a date into a giving format and print the full date object (toString).

Solution 9 - Java

This will help you. DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); print (df.format(new Date());

Solution 10 - Java

I had something like this, my suggestion would be to use java for things like this, don't put in boilerplate code

BasicImplementation

Solution 11 - Java

This looks more compact. Finishes in a single line.

import org.apache.commons.lang3.time.DateFormatUtils;

System.out.println(DateFormatUtils.format(newDate, "yyyy-MM-dd HH:mm:ss"));

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionbhavya View Question on Stackoverflow
Solution 1 - JavaLuciano FiandesioView Answer on Stackoverflow
Solution 2 - JavaaioobeView Answer on Stackoverflow
Solution 3 - JavaBadSkillzView Answer on Stackoverflow
Solution 4 - JavaShan AbeywicremaView Answer on Stackoverflow
Solution 5 - Javabugs_View Answer on Stackoverflow
Solution 6 - JavaThiagoView Answer on Stackoverflow
Solution 7 - JavaOle V.V.View Answer on Stackoverflow
Solution 8 - JavaMByDView Answer on Stackoverflow
Solution 9 - JavaSanjay JainView Answer on Stackoverflow
Solution 10 - JavasomshivamView Answer on Stackoverflow
Solution 11 - JavaShiva kumarView Answer on Stackoverflow