问题
我在计算当月的下一个最后一天是否计划发送的通知时遇到问题。
这是我的代码:
RecurrenceFrequency recurrenceFrequency = notification.getRecurrenceFrequency();
Calendar nextNotifTime = Calendar.getInstance();
这是造成我认为的问题的界限:
nextNotifTime.add(recurrenceFrequency.getRecurrencePeriod(),
recurrenceFrequency.getRecurrenceOffset());
如何使用日历正确设置通知的下个月的最后一天?
#1 热门回答(275 赞)
Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH);
这将返回当前月份的实际最大值。例如,它现在是闰年的2月,所以它返回29 asint
。
#2 热门回答(27 赞)
并将最后一天作为Date对象:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE));
Date lastDayOfMonth = cal.getTime();
#3 热门回答(27 赞)
#java.time
使用Java 8中内置的6936405578库,可以使用TemporalAdjuster
class(或TemporalAdjusters
utility类)
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
LocalDate now = LocalDate.now(); //2015-11-23
LocalDate lastDay = now.with(TemporalAdjusters.lastDayOfMonth()); //2015-11-30
如果你需要添加时间信息,可以使用任何可用的LocalDate到LocalDateTime转换
lastDay.atStartOfDay(); //2015-11-30T00:00