The java.time.DayOfWeek
enums in Java 8 Date-Time API describes the days of the week. The enum has constants value from DayOfWeek.MONDAY
through DayOfWeek.SUNDAY
. These enums also have their integer values where 1
is equal to MONDAY
and 7
is equal to SUNDAY
.
In the code snippet below you can see a couple usage of the DayOfWeek
enums. We start by getting all the enum values using the values()
method that return an array of DayOfWeek
. We iterate this array and print out the enum value and its corresponding integer value.
// Get DayOfWeek enums value
DayOfWeek[] dayOfWeeks = DayOfWeek.values();
for (int i = 0; i < dayOfWeeks.length; i++) {
DayOfWeek dayOfWeek = dayOfWeeks[i];
System.out.println("dayOfWeek[" + i + "] = " + dayOfWeek + "; value = " +
dayOfWeek.getValue());
}
To create a DayOfWeek
object we can use the of(int)
factory method. We pass an integer value of this method. For example giving 1
will give us the DayOfWeek.MONDAY
. We can also utilize enum valueOf(String)
method to create enum from string value.
// Get DayOfWeek from int value
DayOfWeek dayOfWeek = DayOfWeek.of(1);
System.out.println("dayOfWeek = " + dayOfWeek);
// Get DayOfWeek from string value
dayOfWeek = DayOfWeek.valueOf("SATURDAY");
System.out.println("dayOfWeek = " + dayOfWeek);
To get the DayOfWeek
from a date-time object we can use the getDayOfWeek()
method. Below we get the day of week from a LocalDate
object.
// Get DayOfWeek of a date object
LocalDate date = LocalDate.now();
DayOfWeek dow = date.getDayOfWeek();
System.out.println("Date = " + date);
System.out.println("Dow = " + dow + "; value = " + dow.getValue());
We can also get the day of week for a specific locale. To do this we can use the DayOfWeek.getDisplayName(TextStyle, Locale)
method. The TextStyle
can be of value TextStyle.FULL
, TextStyle.SHORT
, TextStyle.NARROW
which will give us the full, short, and narrow version of the display name. The example below get the display name for Indonesian and German version.
// Get DayOfWeek display name in different locale.
Locale locale = new Locale("id", "ID");
String indonesian = dow.getDisplayName(TextStyle.SHORT, locale);
System.out.println("ID = " + indonesian);
String germany = dow.getDisplayName(TextStyle.FULL, Locale.GERMANY);
System.out.println("DE = " + germany);
There is also a plus(long)
method that can be used to add number of days to a DayOfWeek
object. For example adding 4 to MONDAY
will give us DayOfWeek.FRIDAY
.
// Adding number of days to DayOfWeek enum.
System.out.println("DayOfWeek.MONDAY.plus(4) = " + DayOfWeek.MONDAY.plus(4));
Here is the complete code for the snippets above:
package org.kodejava.datetime;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.TextStyle;
import java.util.Locale;
public class DayOffWeekExample {
public static void main(String[] args) {
// Get DayOfWeek enums value
DayOfWeek[] dayOfWeeks = DayOfWeek.values();
for (int i = 0; i < dayOfWeeks.length; i++) {
DayOfWeek dayOfWeek = dayOfWeeks[i];
System.out.println("dayOfWeek[" + i + "] = " + dayOfWeek + "; value = " +
dayOfWeek.getValue());
}
// Get DayOfWeek from int value
DayOfWeek dayOfWeek = DayOfWeek.of(1);
System.out.println("dayOfWeek = " + dayOfWeek);
// Get DayOfWeek from string value
dayOfWeek = DayOfWeek.valueOf("SATURDAY");
System.out.println("dayOfWeek = " + dayOfWeek);
// Get DayOfWeek of a date object
LocalDate date = LocalDate.now();
DayOfWeek dow = date.getDayOfWeek();
System.out.println("Date = " + date);
System.out.println("Dow = " + dow + "; value = " + dow.getValue());
// Get DayOfWeek display name in different locale.
Locale locale = new Locale("id", "ID");
String indonesian = dow.getDisplayName(TextStyle.SHORT, locale);
System.out.println("ID = " + indonesian);
String germany = dow.getDisplayName(TextStyle.FULL, Locale.GERMANY);
System.out.println("DE = " + germany);
// Adding number of days to DayOfWeek enum.
System.out.println("DayOfWeek.MONDAY.plus(4) = " + DayOfWeek.MONDAY.plus(4));
}
}
And the result of the code above are:
dayOfWeek[0] = MONDAY; value = 1
dayOfWeek[1] = TUESDAY; value = 2
dayOfWeek[2] = WEDNESDAY; value = 3
dayOfWeek[3] = THURSDAY; value = 4
dayOfWeek[4] = FRIDAY; value = 5
dayOfWeek[5] = SATURDAY; value = 6
dayOfWeek[6] = SUNDAY; value = 7
dayOfWeek = MONDAY
dayOfWeek = SATURDAY
Date = 2021-11-16
Dow = TUESDAY; value = 2
ID = Sel
DE = Dienstag
DayOfWeek.MONDAY.plus(4) = FRIDAY
- How do I get number of each day for a certain month in Java? - September 8, 2024
- How do I get operating system process information using ProcessHandle? - July 22, 2024
- How do I sum a BigDecimal property of a list of objects using Java Stream API? - July 22, 2024