Here are two versions demonstrating how to check if a date is a Saturday or Sunday, and how to calculate the weekday of year.
Using Calendar
(all Java versions):
private static void testUtilDate(String dateString) throws ParseException {
System.out.println(dateString);
java.util.Date date = new SimpleDateFormat("yyyy/MM/dd").parse(dateString);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) {
System.out.println(" It is a Saturday or Sunday");
} else {
System.out.println(" It is NOT a Saturday or Sunday");
}
int dayOfWeekInMonth = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH);
System.out.println(" Day-of-Week in Month: " + dayOfWeekInMonth);
int dayOfWeekInYear = ((cal.get(Calendar.DAY_OF_YEAR) - 1) / 7) + 1;
System.out.println(" Day-of-Week in Year: " + dayOfWeekInYear);
}
Using LocalDate
(Java 8+):
private static void testLocalDate(String dateString) {
System.out.println(dateString);
java.time.LocalDate date = java.time.LocalDate.parse(dateString);
DayOfWeek dayOfWeek = date.getDayOfWeek();
if (dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY) {
System.out.println(" It is a Saturday or Sunday");
} else {
System.out.println(" It is NOT a Saturday or Sunday");
}
int dayOfWeekInMonth = (date.getDayOfMonth() - 1) / 7 + 1;
System.out.println(" Day-of-Week in Month: " + dayOfWeekInMonth);
int dayOfWeekInYear = (date.getDayOfYear() - 1) / 7 + 1;
System.out.println(" Day-of-Week in Year: " + dayOfWeekInYear);
}
Test
testUtilDate("2016/01/23");
testLocalDate("2016-01-23");
testUtilDate("2016/07/04");
testLocalDate("2016-07-04");
Output
2016/01/23
It is a Saturday or Sunday
Day-of-Week in Month: 4
Day-of-Week in Year: 4
2016-01-23
It is a Saturday or Sunday
Day-of-Week in Month: 4
Day-of-Week in Year: 4
2016/07/04
It is NOT a Saturday or Sunday
Day-of-Week in Month: 1
Day-of-Week in Year: 27
2016-07-04
It is NOT a Saturday or Sunday
Day-of-Week in Month: 1
Day-of-Week in Year: 27