获取每月的最后一天

2022-09-01 21:07:14

为了获得月份的最后一个日期,我编写了此函数

/**
 * @param month integer value of month
 * @param year integer value of month
 * @return last day of month in MM/dd/YYYY format
 */
private static String getDate(int month, int year) {
    Calendar calendar = Calendar.getInstance();
    // passing month-1 because 0-->jan, 1-->feb... 11-->dec
    calendar.set(year, month - 1, 1);
    calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
    Date date = calendar.getTime();
    DateFormat DATE_FORMAT = new SimpleDateFormat("MM/dd/YYYY");
    return DATE_FORMAT.format(date);
}

对于所有输入,当月份为12月时,它有一个例外,即getDate(12,2012)返回12/31/2013,但它应该返回12/31/2012。请解释行为和解决方案。


答案 1

更改为YYYYyyyy

DateFormat DATE_FORMAT = new SimpleDateFormat("MM/dd/yyyy");  

YYYY是错误的dateformat


答案 2

试试这个

calendar.add(Calendar.MONTH, month);  
calendar.set(Calendar.DAY_OF_MONTH, 1);  
calendar.add(Calendar.DATE, -1);  

Date date = calendar.getTime();