我有一个日期选择器,用户选择一个日期,然后选择一个复选框,说明他希望从哪个时期获取日期。例如:
用户选择11月的1.并选择复选框“月”,在这种情况下,结束日期将增加1,即使这个声音很简单,它也会慢慢开始让我烦恼!
问题是Java没有一个很好的日期对象,适用于这种事情,所以我认为我会使用日历,但不容易增加日历日期,例如以下示例:
endDate.set(startDate.YEAR, startDate.MONTH+1, startDate.DATE);
理论上,这会使月份比起始日期增加一个。如果您在12月份将月份增加1,那么整数月份的回报率为startDate.DATE;
和startDate.Year;
我的问题是,有没有更简单的方法来做到这一点?我可以制作大量的If句子,但我真的觉得它有点多余。
答案 0 :(得分:2)
使用add
的{{1}}方法。
java.util.Calendar
答案 1 :(得分:1)
此处的标准推荐是查看Joda-Time(有关详细信息,请参阅here)。它是一个更加一致/能力更强的API,没有任何线程问题困扰标准的Java日期/格式化API,因此被广泛使用和接受。
就上述你想要的东西而言,我建议如下:
LocalDate d = ...
LocalDate nd = d.plusMonths(1);
以上将正确处理月/年翻转。
答案 2 :(得分:1)
您可以使用Calendar.add()
向日历值添加值,例如Calendar.add(Calendar.MONTH, 1)
这会增加一个月,并考虑到1月份是在12月之后。