protected int getLastDayOfMonth(final int monthNum, final int year) {
		switch (monthNum) {
			case 1:
				return 31;
			case 2:
				return (isLeapYear(year)) ? 29 : 28;
			case 3:
				return 31;
			case 4:
				return 30;
			case 5:
				return 31;
			case 6:
				return 30;
			case 7:
				return 31;
			case 8:
				return 31;
			case 9:
				return 30;
			case 10:
				return 31;
			case 11:
				return 30;
			case 12:
				return 31;
			default:
				throw new IllegalArgumentException("Illegal month number: "
						+ monthNum);
		}
	}
Advance the calendar to the particular hour paying particular attention
to daylight saving problems.

@param cal  the calendar to operate on
@param hour the hour to set
spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-schedulerx/src/main/java/com/alibaba/cloud/scheduling/schedulerx/util/CronExpression.java