【发布时间】:2018-05-24 00:36:35
【问题描述】:
如果今天是星期日,如何获取下周日期?我想获取下周周一到周六的日期。
我正在使用以下代码获取日期:
private String[] getDaysOfWeek() {
String[] days = new String[6];
SimpleDateFormat format = new SimpleDateFormat("dd");
Calendar c = GregorianCalendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
for (int i = 0; i < 6; i++) {
if (i == 0) {
days[i] = format.format(c.getTime());
} else {
c.add(Calendar.DATE, 1);
days[i] = format.format(c.getTime());
}
System.out.println("DateTest" + days[i]);
}
return days;
}
当我设置设备语言英语(美国)时它工作正常,但如果设备设置为语言英语(英国),它会返回前一周日期。
【问题讨论】:
-
在美国,星期日是一周的第一天。在英国,星期一是。人们可能会怀疑这会以某种方式导致不同的结果。
-
顺便说一句,将
i == 0的情况保持在循环之外更简单:days[0] = …;然后for (int i = 1; …),并且您不需要在内部使用if-else语句循环。 -
我是否理解正确,无论当前星期几,您都希望星期几的星期一到星期六,将星期日视为一周的第一天?跨度>
-
一周中不同的第一天是问题所在。对于美国,我们目前已经在第 50 周,因为今天是星期日,这是 Locals.US 的第一周。在英国,我们仍处于“上周”,即第 49 周。如果您明天(周一)开始您的课程,结果将是相同的。那么您对每种情况的预期结果是什么?
-
仅供参考,您正在使用非常麻烦的旧日期时间类,现在已被现代 java.time 类取代。
标签: java android date weekday java.util.calendar