7

有没有最简单的方法可以找到本周的任何一天?(此函数返回真或假,与给定日期是否在本周有关)。

4

5 回答 5

26

你肯定想使用 Calendar 类:http ://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html

这是一种方法:

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

这个答案适用于安卓。将您选择的日期日历对象放在下面的方法中,以检查您选择的日期是否为当前星期日期

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);
}

Android 已经java.util.Calendar为任何与日期和时间相关的查询提供了该类。

于 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 回答