7

今週の日を見つける最も簡単な方法はありますか?(この関数は、指定された日が現在の週であるかどうかに関連して、trueまたはfalseを返します)。

4

5 に答える 5

26

間違いなくCalendarクラスを使用したい:http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html

これを行う1つの方法は次のとおりです。

public static boolean isDateInCurrentWeek(Date date) {
  Calendar currentCalendar = Calendar.getInstance();
  int week = currentCalendar.get(Calendar.WEEK_OF_YEAR);
  int year = currentCalendar.get(Calendar.YEAR);
  Calendar targetCalendar = Calendar.getInstance();
  targetCalendar.setTime(date);
  int targetWeek = targetCalendar.get(Calendar.WEEK_OF_YEAR);
  int targetYear = targetCalendar.get(Calendar.YEAR);
  return week == targetWeek && year == targetYear;
}
于 2012-04-25T10:35:03.580 に答える
4

クラスを使用しCalendarてYEARフィールドとWEEK_OF_YEARフィールドを取得し、両方が同じかどうかを確認します。

文化によって、どの曜日が週の最初の日であるかについて意見が異なるため、結果はロケールによって異なることに注意してください。

于 2012-04-25T10:29:11.103 に答える
2
于 2013-12-12T05:33:20.263 に答える
0

この答えはAndroid用です。選択した日付Calendarオブジェクトを以下のメソッドに入れて、選択した日付が現在の週の日付であるかどうかを確認します。

private boolean isCurrentWeekDateSelect(Calendar yourSelectedDate) {
    Date ddd = yourSelectedDate.getTime();
    Calendar c = Calendar.getInstance();
    c.setFirstDayOfWeek(Calendar.MONDAY);

    c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    c.set(Calendar.HOUR_OF_DAY, 0);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    c.set(Calendar.MILLISECOND, 0);

    Date monday = c.getTime();
    Date nextMonday= new Date(monday.getTime()+7*24*60*60*1000);

    return ddd.after(monday) && ddd.before(nextMonday);
}

java.util.CalendarAndroidは、日付と時刻に関連するクエリのクラスをすでに提供しています。

于 2018-06-30T05:08:02.843 に答える
0

シンプルなKotlinソリューション:

fun isDateInCurrentWeek(date: DateTime): Boolean {
         val cal = Calendar.getInstance()
         cal.add(Calendar.DAY_OF_WEEK, 0)
         var dt= DateTime(cal.timeInMillis)
         return date in dt..dt.plusDays(6)
        }
于 2019-09-04T06:07:24.487 に答える