DayOfWeek and Month Enums

The Date-Time API provides enums for specifying days of the week and months of the year.


The DayOfWeek enum consists of seven constants that describe the days of the week: MONDAY through SUNDAY. The integer values of the DayOfWeek constants range from 1 (Monday) through 7 (Sunday). Using the defined constants (DayOfWeek.FRIDAY) makes your code more readable.

This enum also provides a number of methods, similar to the methods provided by the temporal-based classes. For example, the following code adds 3 days to "Monday" and prints the result. The output is "THURSDAY":


By using the getDisplayName(TextStyle, Locale) method, you can retrieve a string to identify the day of the week in the user's locale. The TextStyle enum enables you to specify what sort of string you want to display: FULL, NARROW (typically a single letter), or SHORT (an abbreviation). The STANDALONE TextStyle constants are used in some languages where the output is different when used as part of a date than when it is used by itself. The following example prints the three primary forms of the TextStyle for "Monday":

DayOfWeek dow = DayOfWeek.MONDAY;
Locale locale = Locale.getDefault();
System.out.println(dow.getDisplayName(TextStyle.FULL, locale));
System.out.println(dow.getDisplayName(TextStyle.NARROW, locale));
System.out.println(dow.getDisplayName(TextStyle.SHORT, locale));

This code has the following output for the en locale:



The Month enum includes constants for the twelve months, JANUARY through DECEMBER. As with the DayOfWeek enum, the Month enum is strongly typed, and the integer value of each constant corresponds to the ISO range from 1 (January) through 12 (December). Using the defined constants (Month.SEPTEMBER) makes your code more readable.

The Month enum also includes a number of methods. The following line of code uses the maxLength method to print the maximum possible number of days in the month of February. The output is "29":

System.out.printf("%d%n", Month.FEBRUARY.maxLength());

The Month enum also implements the getDisplayName(TextStyle, Locale) method to retrieve a string to identify the month in the user's locale using the specified TextStyle. If a particular TextStyle is not defined, then a string representing the numeric value of the constant is returned. The following code prints the month of August using the three primary text styles:

Month month = Month.AUGUST;
Locale locale = Locale.getDefault();
System.out.println(month.getDisplayName(TextStyle.FULL, locale));
System.out.println(month.getDisplayName(TextStyle.NARROW, locale));
System.out.println(month.getDisplayName(TextStyle.SHORT, locale));

This code has the following output for the en locale: