【发布时间】:2015-10-21 12:57:57
【问题描述】:
我有这个方法返回一个 Date(),它被其中一个“字段”(DAY、MONTH、YEAR)更改。
public static Date getDateChanged(Date date, int field, int value) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(field, value);
return cal.getTime();
}
但是,当我们尝试设置的字段与相关日期不兼容时,cal.set() 无法给出异常。所以,在这种情况下:
Date date = new Date();
date = getDateChanged(date, Calendar.DAY_OF_MONTH, 29);
date = getDateChanged(date, Calendar.MONTH, 1); // feb
日期最终是 01/03/15,因为 Calendar.set() 检测到 2 月不能设置为第 29 天,所以自动将日期设置为下一个可能的日期(我认为这就是日常工作)。
这还不错,但是,就我而言,
我想检测到我尝试构建的日期是不可能的,然后开始减少这一天,所以在这种情况下,我想要实现的是 28/02/15,我该怎么做?
例子:
29/02/15 ===> 28/02/15
【问题讨论】: