【发布时间】:2015-07-30 06:51:19
【问题描述】:
所以,我有一个应用程序,用户可以在其中选择一个日期。
他可以选择的最大日期是从当前日期起最多 7 天。
现在,我只显示当月的日历。如果当前日期是 7 月 30 日,则必须为用户提供选择日期至 8 月 6 日的选项,我还必须处理年份变化的情况,即 12 月 30 日是当前日期,+7 天提供 16 年 1 月 6 日.
下面是我用来获取当月所有日期的代码。我应该怎么做才能使它适用于上述情况。
注意:我总是有当前日期可用。
代码:
public class Cals {
public static void main(String args[])
{
Calendar start = Calendar.getInstance();
start.set(Calendar.DAY_OF_MONTH, Calendar.getInstance()
.getActualMinimum(Calendar.DAY_OF_MONTH));
Calendar end = Calendar.getInstance();
end.set(Calendar.DAY_OF_MONTH,
Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH));
Calendar now = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEE d MMM");
for (Date dt = start.getTime(); !start.after(end); start.add(
Calendar.DATE, 1), dt = start.getTime()) {
System.out.println(sdf.format(dt));
}
}
}
当前 O/p:
Wed 1 Jul
Thu 2 Jul
Fri 3 Jul
Sat 4 Jul
Sun 5 Jul
Mon 6 Jul
Tue 7 Jul
Wed 8 Jul
Thu 9 Jul
Fri 10 Jul
Sat 11 Jul
Sun 12 Jul
Mon 13 Jul
Tue 14 Jul
Wed 15 Jul
Thu 16 Jul
Fri 17 Jul
Sat 18 Jul
Sun 19 Jul
Mon 20 Jul
Tue 21 Jul
Wed 22 Jul
Thu 23 Jul
Fri 24 Jul
Sat 25 Jul
Sun 26 Jul
Mon 27 Jul
Tue 28 Jul
Wed 29 Jul
Thu 30 Jul
Fri 31 Jul
预期 O/p:
Wed 1 Jul
Thu 2 Jul
Fri 3 Jul
Sat 4 Jul
Sun 5 Jul
Mon 6 Jul
Tue 7 Jul
Wed 8 Jul
Thu 9 Jul
Fri 10 Jul
Sat 11 Jul
Sun 12 Jul
Mon 13 Jul
Tue 14 Jul
Wed 15 Jul
Thu 16 Jul
Fri 17 Jul
Sat 18 Jul
Sun 19 Jul
Mon 20 Jul
Tue 21 Jul
Wed 22 Jul
Thu 23 Jul
Fri 24 Jul
Sat 25 Jul
Sun 26 Jul
Mon 27 Jul
Tue 28 Jul
Wed 29 Jul
Thu 30 Jul
Fri 31 Jul
Sat 1 Aug
Sun 2 Aug
Mon 3 Aug
Tue 4 Aug
Wed 5 Aug
Thu 6 Aug
【问题讨论】:
-
end.add(Calendar.DATE, 7)在执行循环之前? -
好的。这很容易,但这给了我额外的一天,即一直到 8 月 7 日都是如此。
-
如果您在
endCalendar中添加 7,那么是的,您可以只添加 6 而不是满足您的要求