3

現在の日付と、週の開始日を示す定数があります。その定数に基づいて週の開始日を取得したい。週の最初の曜日を月曜日 (または何か) にハードコードすると、簡単です。しかし、週の最初の曜日は変わり続けます。そのため、初日が変更されるたびにコードを変更したくありません。

これは私が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();
}

週の開始日を取得したい。上記の関数は週の最初の曜日を返し、週の開始日は土曜日にハードコーディングされています。週の開始日に関する要件が変更されるたびに、コードを変更する必要があります。

4

4 に答える 4

0
DateTimeFormatter format = DateTimeFormatter.ofPattern("MM/dd/yyyy");
    LocalDate now = LocalDate.now();
String  startDate = now.with(TemporalAdjusters.previous(DayOfWeek.SUNDAY)).format(format);
于 2020-02-13T05:12:42.957 に答える