Java 使用日历确定是星期一、星期二还是星期五

Java 使用日历确定是星期一、星期二还是星期五,java,calendar,Java,Calendar,如果是星期一、星期二或星期三,我想提前两天,如果是星期四或星期五,我想提前两天到下周一。但我对逻辑公式有问题。看起来Java程序员没有正确设置最终值。无论一周中的哪一天,第一句话似乎总是正确的 import static java.util.Calendar.*; import java.util.GregorianCalendar; public class Demo { public static void main(String[] args) { Gregor

如果是星期一、星期二或星期三,我想提前两天,如果是星期四或星期五,我想提前两天到下周一。但我对逻辑公式有问题。看起来Java程序员没有正确设置最终值。无论一周中的哪一天,第一句话似乎总是正确的

import static java.util.Calendar.*;
import java.util.GregorianCalendar;


public class Demo {
    public static void main(String[] args) {
        GregorianCalendar gc = new GregorianCalendar();
        gc.roll(DAY_OF_WEEK, 2);
        if((gc.get(DAY_OF_WEEK) & (MONDAY | TUESDAY | WEDNESDAY)) == gc.get(DAY_OF_WEEK)){
            System.out.println("it is monday or tuesday or wednesday");
            gc.roll(DAY_OF_WEEK, 2);            
        }else{
            System.out.println("other day");
        }
    }
}

一周中的天数代表值

SUNDAY = 1;
MONDAY = 2;
TUESDAY = 3;
WEDNESDAY = 4;
THURSDAY = 5;
FRIDAY = 6;
SATURDAY = 7;
因此,您所需要做的就是检查
gc.get(每周的第几天)
的结果是否介于
2
4
(包括)之间,因此可能需要将您的条件更改为

if (MONDAY <= gc.get(DAY_OF_WEEK) && gc.get(DAY_OF_WEEK) <= WEDNESDAY) {

if(星期一Days of week代表数值

SUNDAY = 1;
MONDAY = 2;
TUESDAY = 3;
WEDNESDAY = 4;
THURSDAY = 5;
FRIDAY = 6;
SATURDAY = 7;
因此,您所需要做的就是检查
gc.get(每周的第几天)
的结果是否介于
2
4
(包括)之间,因此可能需要将您的条件更改为

if (MONDAY <= gc.get(DAY_OF_WEEK) && gc.get(DAY_OF_WEEK) <= WEDNESDAY) {

如果(星期一)的问题似乎出在您进行检查的按位操作中。请先尝试以长的方式编写它:
f(gc.get(DAY_OF u WEEK)==周一(DAY|u OF u WEEK)==星期二…
。我知道如何做,但我想做得更好。但我想做得更好这将如何更好:性能(通过节省0.010毫秒)、可维护性(事实上,对于没有经验的程序员来说,可读性较低)、可移植性、安全性、可用性、可修改性……?无论如何,如果这是你的目标,你应该把问题转移到看起来像是你正在进行检查的按位操作中的问题。试着先编写它:
ìf(gc.get(一周中的一天)=周一| | gc.get(一周中的一天)=周二…
。我知道如何做,但我想做得更好。但我想做得更好如何更好:性能(节省0.010毫秒)、可维护性(事实上,对于没有经验的程序员来说,可读性较差),可移植性,安全性,可用性,可修改性…?无论如何,如果这是你的目标,你应该把问题也转移到,
周一|周二|周三==2 | 3 | 4==7
。任何
x
对于
1也,
周一|周二|周三==2 | 3 | 4==7
。任何
x
1