現在の日付と、週の開始日を示す定数があります。その定数に基づいて週の開始日を取得したい。週の最初の曜日を月曜日 (または何か) にハードコードすると、簡単です。しかし、週の最初の曜日は変わり続けます。そのため、初日が変更されるたびにコードを変更したくありません。
これは私がJavaのカレンダーで試したことです:
public static Date getLastWeekdayDate()
{
Calendar calendar = new GregorianCalendar();
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
int daysToSubtractFromCurrentDate = 0;
switch (dayOfWeek)
{
case Calendar.WEDNESDAY:
daysToSubtractFromCurrentDate = 4;
break;
case Calendar.THURSDAY:
daysToSubtractFromCurrentDate = 5;
break;
case Calendar.FRIDAY:
daysToSubtractFromCurrentDate = 6;
break;
case Calendar.SATURDAY:
daysToSubtractFromCurrentDate = 0;
break;
case Calendar.SUNDAY:
daysToSubtractFromCurrentDate = 1;
break;
case Calendar.MONDAY:
daysToSubtractFromCurrentDate = 2;
break;
case Calendar.TUESDAY:
daysToSubtractFromCurrentDate = 3;
break;
}
calendar.add(Calendar.DATE, -daysToSubtractFromCurrentDate);
calendar.set(Calendar.AM_PM, Calendar.AM);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
週の開始日を取得したい。上記の関数は週の最初の曜日を返し、週の開始日は土曜日にハードコーディングされています。週の開始日に関する要件が変更されるたびに、コードを変更する必要があります。