我正在尝试创建一个检查“今天”是否在星期一到星期五之间的方法。为此我得到了这一行'int day = Calendar.DAY_OF_WEEK;'
的实际日期。之后我用日期(星期一,星期二,星期四,星期四和星期五)填写一个ArrayList。现在,当我检查实际日期是否在我的ArrayList中时,我设置boolean DAY = true
否则我设置boolean DAY = 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;
}
答案 0 :(得分:49)
Java guarantees (in 1.5)(至少保持1.8不变)SUNDAY
到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
才会成立。
答案 1 :(得分: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
的值。
答案 2 :(得分:3)
我应该为你做这个伎俩。
int day = cal.get(Calendar.DAY_OF_WEEK);
if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY){
DAY = true;
}else{
DAY = false;
}
答案 3 :(得分:1)
int day = Calendar.DAY_OF_WEEK;
这里的逻辑被打破了。 DAY_OF_WEEK是一个常量,用于标识我们需要从Calendar
实例中检索哪种类型的数据。
您问题的最简单解决方案(因为Calendar.FRIDAY&gt; ...&gt; Calendar.MONDAY)是
Calendar now = Calendar.getInstance();
int day = now.get(Calendar.DAY_OF_WEEK);
if (day >= Calendar.MONDAY && day <= Calendar.FRIDAY)
// do something
答案 4 :(得分:1)
第一个Calendar.DAY_OF_WEEK是一个整数字段,总是会给你7.你需要创建一个日历的实例,如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");
}
您可以将此逻辑应用于您的问题!!