设置calendar.day_of_month就是设置calendar.year

kyr*_*pav 2 java spring calendar date simpledateformat

我有一个初始设置为2019-11-01的日历,我想使用以下方法将其设置为月份的第一个日期和最后一个日期:

cal.set(int field,int value) 
Run Code Online (Sandbox Code Playgroud)

对于该字段,我可以使用以下任一方法:

Calendar.DATE or Calendar.DAY_OF_MONTH
Run Code Online (Sandbox Code Playgroud)

但是sysout上的系统显示它正在设置Calendar.YEAR而不是

System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()));

cal.set(cal.get(Calendar.DAY_OF_MONTH),1);

System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()));

cal.set(cal.get(Calendar.DAY_OF_MONTH),cal.getActualMaximum(Calendar.DAY_OF_MONTH));

System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime()));
Run Code Online (Sandbox Code Playgroud)

Sysout:

2019-11-01

0001-11-01

0030-11-01

Dea*_*ool 5

您可以使用Java-8现代日期时间API LocalDate,停止使用旧版Calendarutil.Date

LocalDate date = LocalDate.parse("2019-11-01");

System.out.println(date.with(TemporalAdjusters.firstDayOfMonth()));  //2019-11-01
System.out.println(date.with(TemporalAdjusters.lastDayOfMonth()));   //2019-11-30
Run Code Online (Sandbox Code Playgroud)