Java - 获取当周的日期名称数组

Chr*_*sAF 6 java arrays loops calendar dayofweek

我正在寻找的是在java中创建一周中的数组,从昨天开始,最多可以达到六天时间

 String daysWeek[] = { "Yesterday", "Today", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"};
Run Code Online (Sandbox Code Playgroud)

我希望返回的数组的前两个元素为Yesterday和Today.

起初,这似乎是一个简单的任务使用

currentDay = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);

String daysList[] = {"Sunday", "Monday", "Tuesday", "Wednesday",
            "Thursday", "Friday", "Saturday"};

String daysWeek[] = {"Yesterday", "Today", daysList[currentDay], daysList[currentDay+1], ...};
Run Code Online (Sandbox Code Playgroud)

上面的注释daysList[currentDay]将在明天返回,因为daysList开始的数组为0,即如果currentDay = 3今天是星期二,那么这将是daysList[2].

但我的问题在于,如果currentDay是7,暗示今天是星期六,那么currentDay+1明天将是阵列中不存在的第八个元素.

是否有任何我可以循环我的数字,如果今天是星期三或稍后一次currentDay + x > 7,currentDay回到1?

这一切都发生在一个调用的方法中,getDaysList(currentDay)它返回daysWeek[]数组.

wch*_*gin 7

这里使用的函数是modulo(%)运算符.

基本上,模运算符所做的是取除除法的其余部分,这正是你想要的.(还记得四年级时"9/2"不是4.5,但是4个余数1?这是余数部分.)

所以不要:

days[currentDay + x]
Run Code Online (Sandbox Code Playgroud)

使用:

days[(currentDay + x) % 7]
Run Code Online (Sandbox Code Playgroud)

关于模运算符返回的值的快速示例:

 0 % 7 = 0   (0 / 7 = 0 R0)
 1 % 7 = 1   (1 / 7 = 0 R1)
 6 % 7 = 6   (6 / 7 = 0 R6)
 7 % 7 = 0   (7 / 7 = 1 R0)
 8 % 7 = 1   (8 / 7 = 1 R1)
15 % 7 = 1   (15 / 7 = 2 R1)
Run Code Online (Sandbox Code Playgroud)