public static Date getLastDayOfMonth(int year, int month) { Calendar cal = Calendar.getInstance(); //设置年份 cal.set(Calendar.YEAR, year); //设置月份 cal.set(Calendar.MONTH, month); //获取当月最小值 int lastDay = cal.getMinimum(Calendar.DAY_OF_MONTH); //设置日历中的月份,当月+1月-1天=当月最后一天 cal.set(Calendar.DAY_OF_MONTH, lastDay - 1); return cal.getTime(); }
时间: 2024-04-10 14:32:24 浏览: 114
这段代码是一个静态方法,用于获取指定年份和月份的最后一天的 `java.util.Date` 对象。
在方法中,我们首先使用 `Calendar.getInstance()` 方法获取一个 `Calendar` 对象,表示当前日期和时间。然后,通过设置 `Calendar` 对象的年份和月份来指定要获取最后一天的年份和月份。
接下来,我们使用 `cal.getMinimum(Calendar.DAY_OF_MONTH)` 方法获取当月的最小日期值,即第一天。然后,通过将最小日期值减去 1 来设置日历中的日期,即可得到当月的最后一天。
最后,我们使用 `cal.getTime()` 方法将 `Calendar` 对象转换为 `Date` 对象,并将其作为结果返回。
请注意,该方法假设您正在使用的是 Java 8 或更高版本的 JDK,并且在代码中已经导入了必要的类和方法(例如 `java.util.Calendar`、`java.util.Date`)。
如果需要使用该方法,请确保传入的年份和月份合法(例如年份大于 0,月份在 0 到 11 的范围内),并根据需要进行异常处理。
相关问题
public static int getAge(Date birth) { Calendar cal = Calendar.getInstance(); int thisYear = cal.get(Calendar.YEAR); int thisMonth = cal.get(Calendar.MONTH); int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH); cal.setTime(birth); int birthYear = cal.get(Calendar.YEAR); int birthMonth = cal.get(Calendar.MONTH); int birthdayOfMonth = cal.get(Calendar.DAY_OF_MONTH); int age = thisYear - birthYear; // 未足月 if (thisMonth <= birthMonth) { // 当月 if (thisMonth == birthMonth) { // 未足日 if (dayOfMonth < birthdayOfMonth) { age--; } } else { age--; } } return age; }
下面是代码的简化版本:
```
public static int getAge(Date birth) {
Calendar cal = Calendar.getInstance();
cal.setTime(birth);
int birthYear = cal.get(Calendar.YEAR);
int birthMonth = cal.get(Calendar.MONTH);
int birthdayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
int thisYear = Calendar.getInstance().get(Calendar.YEAR);
int thisMonth = Calendar.getInstance().get(Calendar.MONTH);
int dayOfMonth = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
int age = thisYear - birthYear;
if (thisMonth <= birthMonth && thisMonth == birthMonth && dayOfMonth < birthdayOfMonth) {
age--;
} else {
age--;
}
return age;
}
```
这个简化版本将一些变量的声明和初始化放在了一起,同时将一些重复的代码进行了简化。
import java.util.Calendar;import java.util.Date;public class QuarterDates { public static void main(String[] args) { int year = 2021; // 设置要计算的年份 // 计算每个季度的起始日期和结束日期 for (int quarter = 1; quarter <= 4; quarter++) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, (quarter - 1) * 3); Date startDate = cal.getTime(); // 季度起始日期 cal.add(Calendar.MONTH, 2); cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE)); Date endDate = cal.getTime(); // 季度结束日期 System.out.println("第" + quarter + "季度起始日期:" + startDate); System.out.println("第" + quarter + "季度结束日期:" + endDate); } }}这段代码季度起始时间为什么是从1月7号开始
这段代码中并没有指定季度起始时间是从1月7号开始的。根据代码计算,每个季度的起始月份是通过 `(quarter - 1) * 3` 计算得到的,其中 `quarter` 表示季度数,从1开始到4结束。因此第一个季度的起始月份是0,即1月,对应的起始日期应该是1月1日。可能是在你的电脑上运行时出现了时区等问题,导致输出的日期不是预期的结果。
阅读全文