gpt4 book ai didi

java - Android 获取上周日期

转载 作者:行者123 更新时间:2023-12-01 16:49:07 26 4
gpt4 key购买 nike

我有一些代码可以获取当前星期并将其加载到数组中:

DateFormat format = new SimpleDateFormat("M-dd");
calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.SUNDAY);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);

days = new String[7];
for (int i = 0; i < 7; i++)
{
calendar.add(Calendar.DATE, 1);
days[i] = format.format(calendar.getTime());
}

然后,我有一些代码在选择按钮时运行,该按钮将检索上周的日期并将它们加载到数组中:

DateFormat format = new SimpleDateFormat("M-dd");

days = new String[7];

for (int i = 0; i < 7; i++)
{
calendar.add(Calendar.DATE, -1);
days[i]=format.format(calendar.getTime());
}

我的问题是,它将加载例如:5-22-17、5-23-17、5-24-17、5-25-17、5-26-17、5-27-17、5 -28-17 进入第一周的初始加载,然后当我单击“上一个”按钮运行上一个按钮代码时,它只会返回 1 天:17 年 5 月 21 日 - 17 年 5 月 27 日。如果我再次单击它,它就会返回整整一周:17 年 14 月 5 日 - 17 年 5 月 20 日。

如何修复我的代码,以便在第一次点击时正确检索前一周的日期?

最佳答案

首先,您将一周的第一天设置为星期日,但随后在获取第一个值之前添加 1 ,因此结果为 Mon 5/22Sun 5/28,而不是周日 5/21周六 5/27

其次,当第一个循环完成时,Calendar 对象位于 5/28。然后向后退一步,在获取最后一个值之前减去 1,因此结果是 5/27 向下5/21,而不是像你说的那样 5/215/27

这使得日历对象位于5/21。重复上述操作,您会将 5/20 降至 5/14,而不是 5/14 降至 5/20 >.

因此,要获得周日到周六一周的结果,就像您告诉日历您想要的那样,请在获取值后添加 1。为了让一周的时间按正确的顺序排列,一定要循序渐进。要返回到上一周,由于日历位于该周之后,您可以返回 2 周以开始构建上一周。

public class Test {
private Calendar calendar;
public String[] getCurrentWeek() {
this.calendar = Calendar.getInstance();
this.calendar.setFirstDayOfWeek(Calendar.SUNDAY);
this.calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return getNextWeek();
}
public String[] getNextWeek() {
DateFormat format = new SimpleDateFormat("M-dd");
String[] days = new String[7];
for (int i = 0; i < 7; i++) {
days[i] = format.format(this.calendar.getTime());
this.calendar.add(Calendar.DATE, 1);
}
return days;
}
public String[] getPreviousWeek() {
this.calendar.add(Calendar.DATE, -14);
return getNextWeek();
}
public static void main(String[] args) {
Test t = new Test();
System.out.println("Current : " + Arrays.toString(t.getCurrentWeek()));
System.out.println("Previous: " + Arrays.toString(t.getPreviousWeek()));
System.out.println("Previous: " + Arrays.toString(t.getPreviousWeek()));
System.out.println("Next : " + Arrays.toString(t.getNextWeek()));
System.out.println("Next : " + Arrays.toString(t.getNextWeek()));
}
}

输出

Current : [5-21, 5-22, 5-23, 5-24, 5-25, 5-26, 5-27]
Previous: [5-14, 5-15, 5-16, 5-17, 5-18, 5-19, 5-20]
Previous: [5-07, 5-08, 5-09, 5-10, 5-11, 5-12, 5-13]
Next : [5-14, 5-15, 5-16, 5-17, 5-18, 5-19, 5-20]
Next : [5-21, 5-22, 5-23, 5-24, 5-25, 5-26, 5-27]

关于java - Android 获取上周日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44122813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com