Is there a date format to display the day of the week in java?
Solution 1
This should display 'Tue':
new SimpleDateFormat("EEE").format(new Date());
This should display 'Tuesday':
new SimpleDateFormat("EEEE").format(new Date());
This should display 'T':
new SimpleDateFormat("EEEEE").format(new Date());
So your specific example would be:
new SimpleDateFormat("yyyy-MM-EEE").format(new Date());
Solution 2
Yep - 'E' does the trick
http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
Date date = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-E");
System.out.println(df.format(date));
Solution 3
SimpleDateFormat sdf=new SimpleDateFormat("EEE");
EEE stands for day of week for example Thursday is displayed as Thu.
Solution 4
tl;dr
LocalDate.of( 2018 , Month.JANUARY , 23 )
.format( DateTimeFormatter.ofPattern( “uuuu-MM-EEE” , Locale.US ) )
java.time
The modern approach uses the java.time classes.
LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ;
Note how we specify a Locale
such as Locale.CANADA_FRENCH
to determine the human language used to translate the name of the day.
DateTimeFormatter f = DateTimeFormatter.ofPattern( “uuuu-MM-EEE” , Locale.US ) ;
String output = ld.format( f ) ;
ISO 8601
By the way, you may be interested in the standard ISO 8601 week numbering scheme: yyyy-Www-d
.
2018-W01-2
Week # 1 has the first Thursday of the calendar-year. Week starts on a Monday. A year has either 52 or 53 weeks. The last/first few days of a calendar-year may land in the next/previous week-based-year.
The single digit on the end is day-of-week, 1-7 for Monday-Sunday.
Add the ThreeTen-Extra library class to your project for the YearWeek
class.
About java.time
The java.time framework is built into Java 8 and later. These classes supplant the troublesome old legacy date-time classes such as java.util.Date
, Calendar
, & SimpleDateFormat
.
The Joda-Time project, now in maintenance mode, advises migration to the java.time classes.
To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations. Specification is JSR 310.
Where to obtain the java.time classes?
-
Java SE 8, Java SE 9, and later
- Built-in.
- Part of the standard Java API with a bundled implementation.
- Java 9 adds some minor features and fixes.
-
Java SE 6 and Java SE 7
- Much of the java.time functionality is back-ported to Java 6 & 7 in ThreeTen-Backport.
-
Android
- Later versions of Android bundle implementations of the java.time classes.
- For earlier Android, the ThreeTenABP project adapts ThreeTen-Backport (mentioned above). See How to use ThreeTenABP….
The ThreeTen-Extra project extends java.time with additional classes. This project is a proving ground for possible future additions to java.time. You may find some useful classes here such as Interval
, YearWeek
, YearQuarter
, and more.
Solution 5
Use "E"
See the section on Date and Time Patterns:
Related videos on Youtube
Comments
-
rogerstone almost 4 years
I know of date formats such as
"yyyy-mm-dd"
-which displays date in format2011-02-26
"yyyy-MMM-dd"
-which displays date in format2011-FEB-26
to be used in eg:
SimpleDateFormat formatter = new SimpleDateFormat( "yyyy/MMM/dd ");
I want a format which would help me display the day of the week like
2011-02-MON
or anything. I just want the day of the week to be displayed in characters with the month and the year. Can you tell me of a format like this?-
Johan Sjöberg about 13 yearsHow about just using
dd
as format? -
M. Jessup about 13 yearsI'm sure the API docs (download.oracle.com/javase/1.4.2/docs/api/java/text/…), would be happy to provide you an answer.
-
Bozho about 13 yearswhat do you mean "day" - day of week, day of month. In your example the whole date is displayed. Please show the exact input and output you want.
-
Paŭlo Ebermann about 13 yearsAt a general advise, better use the
-
notation only with dates in the ISO format (i.e. year-month-day). The dash was elected there since it was not used for any other date formats at the time, to avoid confusion, and now everyone is using his custom ordering with the dash ...
-
-
Nathan Feger about 13 yearsseeing oracle in the url of the javadocs still feels strange.
-
James Grey almost 9 yearsWe also use:
DateFormat df = new SimpleDateFormat("yyyy-MM-EEEEEEE");
for display long DayOfWeek. -
AuroMetal about 8 yearsBeautiful solution! What I was looking for was: Monday, 04/04/2016. So in my case,
new SimpleDateFormat("EEEE, dd/MM/yyyy");
if it helps someone in the future. -
kosiara - Bartosz Kosarzycki almost 6 yearsOK, it works.
EEEE
displays whole names of day of week - i.e. 'Monday', 'Tuesday' etc. -
Nathan Feger almost 5 yearsI hadn't really considered that this site would even be around, let alone java would finally get around to bailing on Date. It does technically answer the OPs question. However, I can probably add a new section on how the new java.time stuff works