22

我正在尝试创建一种方法来检查“今天”是否在星期一和星期五之间。为此,我得到了这条线'int day = Calendar.DAY_OF_WEEK;' 的实际日期。之后,我用日期(星期一、星期二、星期三、星期四和星期五)填充 ArrayList。现在,当我检查实际日期是否在我的 ArrayList 中时,我设置boolean DAY = trueelse i set boolean DAY = false。我今天和昨天都尝试了该方法,但它总是将布尔值设置为 false。

我需要更改什么代码才能正常工作?你会在这里找到代码。

代码

                int day = Calendar.DAY_OF_WEEK;
                ArrayList<Integer> daylist = new ArrayList<Integer>();
                daylist.add(Calendar.MONDAY);
                daylist.add(Calendar.TUESDAY);
                daylist.add(Calendar.WEDNESDAY);
                daylist.add(Calendar.THURSDAY);
                daylist.add(Calendar.FRIDAY);

                if (daylist.contains(day)){
                    DAY = true;
                }else{
                    DAY = false;
                }
4

5 回答 5

56

哇,这就像试图用热核弹头杀死蚊子 :-)

Java保证(在 1.5 中) (至少在1.8中不变) SUNDAYthrough的值SATURDAY是连续的(1 到 7),因此检查范围很简单。

但是,DAY_OF_WEEK不是星期几,它是一个字段编号(值为 7),要传递给 getter 以检索星期几。唯一Calendar.DAY_OF_WEEK与实际日期匹配的时间是星期六。

您可以使用以下代码:

Calendar myDate = Calendar.getInstance(); // set this up however you need it.
int dow = myDate.get (Calendar.DAY_OF_WEEK);
boolean isWeekday = ((dow >= Calendar.MONDAY) && (dow <= Calendar.FRIDAY));

在此之后,isWeekday当且仅当从myDate星期一到星期五(含)这一天才是正确的。

于 2012-04-12T06:13:45.480 回答
6

int day = Calendar.DAY_OF_WEEK;应该改为

Calendar cal; // The calendar object
....your other code for getting the date goes here....
int day = cal.get(Calendar.DAY_OF_WEEK);

您当前的代码只是获取常量的值Calendar.DAY_OF_WEEK

于 2012-04-12T06:13:25.543 回答
4

我认为这应该对你有用。

int day = cal.get(Calendar.DAY_OF_WEEK);
if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY){
    DAY = true;
}else{
    DAY = false;
}
于 2012-04-12T06:13:58.540 回答
2
int day = Calendar.DAY_OF_WEEK;

逻辑在这里被打破了。DAY_OF_WEEK 是一个常量,标识我们需要从Calendar实例中检索哪种类型的数据。

解决您的问题的最简单方法(因为 Calendar.FRIDAY > ... > Calendar.MONDAY)是

Calendar now = Calendar.getInstance();
int day = now.get(Calendar.DAY_OF_WEEK);
if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY)
  // do something
于 2012-04-12T06:15:10.987 回答
1

第一个 Calendar.DAY_OF_WEEK 是一个整数字段,将始终为您提供 7。您需要创建一个 Calendar 实例,例如 Calendar cal = Calendar.getInstance(); 默认情况下,它会为您提供当前时区的当前日期。然后你可以调用 cal.get(Calendar.DAY_OF_WEEK); 这会给你周日和周六之间的任何一天

现在你可以检查这样的事情

    if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
         System.out.println("Weekend");
     } else {
        System.out.println("Weekday");
     }

您可以将此逻辑应用于您的问题!

于 2012-04-12T06:24:17.613 回答