Here are simple and reliable ways to check whether a date falls on a weekend in Java. Prefer the modern java.time API (Java 8+), which is clearer and thread-safe.
- Using LocalDate (recommended)
import java.time.DayOfWeek;
import java.time.LocalDate;
public class WeekendChecker {
public static boolean isWeekend(LocalDate date) {
DayOfWeek dow = date.getDayOfWeek();
return dow == DayOfWeek.SATURDAY || dow == DayOfWeek.SUNDAY;
}
public static void main(String[] args) {
System.out.println(isWeekend(LocalDate.now())); // true or false
}
}
- With time zones (e.g., when you start from an Instant)
import java.time.*;
public class WeekendCheckerTZ {
public static boolean isWeekend(Instant instant, ZoneId zone) {
DayOfWeek dow = instant.atZone(zone).getDayOfWeek();
return dow == DayOfWeek.SATURDAY || dow == DayOfWeek.SUNDAY;
}
public static void main(String[] args) {
boolean weekendInNY = isWeekend(Instant.now(), ZoneId.of("America/New_York"));
System.out.println(weekendInNY);
}
}
- If you still use the legacy Calendar API
import java.util.Calendar;
public class WeekendCheckerLegacy {
public static boolean isWeekend(Calendar cal) {
int dow = cal.get(Calendar.DAY_OF_WEEK);
return dow == Calendar.SATURDAY || dow == Calendar.SUNDAY;
}
}
- Configurable “weekend” definition (some regions consider Friday/Saturday)
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.EnumSet;
import java.util.Set;
public class ConfigurableWeekend {
private static final Set<DayOfWeek> DEFAULT_WEEKEND = EnumSet.of(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY);
public static boolean isWeekend(LocalDate date, Set<DayOfWeek> weekendDays) {
return weekendDays.contains(date.getDayOfWeek());
}
public static void main(String[] args) {
System.out.println(isWeekend(LocalDate.now(), DEFAULT_WEEKEND));
// Example for Fri/Sat weekend:
Set<DayOfWeek> friSatWeekend = EnumSet.of(DayOfWeek.FRIDAY, DayOfWeek.SATURDAY);
System.out.println(isWeekend(LocalDate.now(), friSatWeekend));
}
}
Notes:
- Use
java.timeclasses (LocalDate, ZonedDateTime, DayOfWeek) for new code. - If you have a timestamp without a zone (Instant), convert with a ZoneId before checking the day of the week.

