从Java日期/日历获取上一季度的最后日期

时间:2013-10-04 06:59:12

标签: java date calendar

我想从Java Date / Calender类中获取最后一个quater的最后日期。

例如:

If current date = 3rd Oct

Lat Quater Last Date : 30th Sept. 

我可以使用date.getMonth()方法获得相同的效果,但由于这些方法已被删除,因此想知道是否有更好的方法可以实现相同的目标。

1 个答案:

答案 0 :(得分:1)

对于日期操作,您应该使用Calendar。这可能不是最有效的方法,但它适用于您的问题:

public Date calculateLastDayOfLastQuarter(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);

    SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
    int year = calendar.get(Calendar.YEAR);

    try {
        switch (calendar.get(Calendar.MONTH)) {
        case Calendar.JANUARY:
        case Calendar.FEBRUARY:
        case Calendar.MARCH:
            return sdf.parse("31.12." + (year - 1));
        case Calendar.APRIL:
        case Calendar.MAY:
        case Calendar.JUNE:
            return sdf.parse("31.03." + year);
        case Calendar.JULY:
        case Calendar.AUGUST:
        case Calendar.SEPTEMBER:
            return sdf.parse("30.06." + year);
        case Calendar.OCTOBER:
        case Calendar.NOVEMBER:
        case Calendar.DECEMBER:
            return sdf.parse("30.09." + year);
        default:
            return null;
        }
    } catch (ParseException e) {
        e.printStackTrace();
        return null;
    }
}