In Java, how to get strings of days of week (Sun, Mon, ..., Sat) with system's default Locale (language)

Naetmul picture Naetmul · May 14, 2013 · Viewed 37k times · Source

The simplest way:

String[] namesOfDays = new String[7] {
    "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"
};

This method does not use Locale. Therefore, if the system's language is not English, this method does not work properly.

Using Joda time, we can do like this:

String[] namesOfDays = new String[7];
LocalDate now = new LocalDate();

for (int i=0; i<7; i++) {
    /* DateTimeConstants.MONDAY = 1, TUESDAY = 2, ..., SUNDAY = 7 */
    namesOfDays[i] = now.withDayOfWeek((DateTimeConstants.SUNDAY + i - 1) % 7 + 1)
        .dayOfWeek().getAsShortText();
}

However, this method uses today's date and calendar calculations, which are useless for the final purpose. Also, it is a little complicated.

Is there an easy way to get Strings like "Sun", "Mon", ..., "Sat" with system's default locale?

Answer

Blackbelt picture Blackbelt · May 14, 2013

If I have not misunderstood you

 calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US);

is what you are looking for. Here you can find the documentation,

Or you can also use, getShortWeekdays()

String[] namesOfDays = DateFormatSymbols.getInstance().getShortWeekdays()