我想获得一个月的最大日期,它在某一天不起作用,就像代码一样,它按条件出现如下\nFebruary has Problem 2017 Feb Max is 28\xef\xbc \x8c如果您计算机的日期大于 28,例如 2017-03-29 或 2017-04-30
\n\nDate date = PrimeUtil.formatStringToTime("2017-02","yyyy-MM");\nSystem.out.println(date);\nCalendar c = Calendar.getInstance();\nc.set(Calendar.YEAR,date.getYear());\nc.set(Calendar.MONTH,date.getMonth());\nc.set(Calendar.DAY_OF_MONTH,c.getActualMaximum(Calendar.DAY_OF_MONTH));\nSystem.out.println(c.getTime());\nRun Code Online (Sandbox Code Playgroud)\n
我遇到了你的问题。问题是,当您设置月份时,如果需要,日期会发生变化。
我有一个方法:
public static Date getLastDayOfMounth(int month){
Calendar cTemp = Calendar.getInstance();
// here is where I need to set the day
cTemp.set(Calendar.MONTH, month);
cTemp.set(Calendar.DAY_OF_MONTH, cTemp.getActualMaximum(Calendar.DAY_OF_MONTH));
return cTemp.getTime();
}
Run Code Online (Sandbox Code Playgroud)
我有一个用于该方法的测试单元,用于测试每个月的方法,从 0 到 11。直到今天它一直有效。
今天,2018 年 3 月 29 日,2 月份的测试用例出错了……为什么?
第一个 cTemp = 29/03/2018(今天)
然后cTemp.set(Calendar.MONTH, 1);是 29/02/2018 但这一天不存在,所以变成了 01/03/2018
然后cTemp.getActualMaximum(Calendar.DAY_OF_MONTH)是三月的最后一天。
我解决了添加
cTemp.set(Calendar.DAY_OF_MONTH, 1);
Run Code Online (Sandbox Code Playgroud)
在设置月份之前。所以我总是从第一天开始,避免跳到下个月的问题。
| 归档时间: |
|
| 查看次数: |
4434 次 |
| 最近记录: |