Calendar类获取本月的第一天和最后一天,最近3个月的时间范围,本季度,上季度的时间范围
1、获取当前月的第一天和最后一天
方法一:
# 获取一个Calendar对象
Calendar cal = Calendar.getInstance();
# 获取当前时间
cal.setTime(new Date());
# 获取当前时间上一个月,可以根据需要获取指定月份
# 上个月 -1
# 当月 0
# 下个月 1
# ... -2 -1 0 1 2
cal.add(Calendar.MONTH, -1);
# 获取上个月的第一天
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
# 得到上个月的第一天
Date lastMonthFirstDay = cal.getTime();
# 获取当前月
cal.add(Calendar.MONTH, 0);
# 获取当前月的最后一天
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
# 得到当前月的最后一天
Date preMonth=cal.getTime();
方法二:
// 获取当前月份的时间范围
Calendar calendar = new GregorianCalendar();
// 当前月的第一天,可以根据需要获取指定月份
# 上个月 -1
# 当月 0
# 下个月 1
# ... -2 -1 0 1 2
calendar.set(Calendar.DAY_OF_MONTH, 1);
Date startMonth = calendar.getTime();
// 当前月的最后一天
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 0);
Date endMonth = calendar.getTime();
2、格式化时间
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.MONTH, -2);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
String threeStart = dateFormat.format(cal.getTime());
System.out.println("当前时间:"+threeStart);
3、获取季度初至季度末日期
// 季度初
calendar.setTime(new Date());
int month = getQuarterInMonth(calendar.get(Calendar.MONTH), true);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.DAY_OF_MONTH, 1);
System.out.println("当季度的第一天:" + print(calendar.getTime()));
// 季度末
calendar.setTime(new Date());
month = getQuarterInMonth(calendar.get(Calendar.MONTH), false);
calendar.set(Calendar.MONTH, month + 1);
calendar.set(Calendar.DAY_OF_MONTH, 0);
System.out.println("当前时间的季度末:" + print(calendar.getTime()));
}
private static String print(Date d) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return df.format(d);
}
// 返回第几个月份,不是几月
// 季度一年四季, 第一季度:2月-4月, 第二季度:5月-7月, 第三季度:8月-10月, 第四季度:11月-1月
private static int getQuarterInMonth(int month, boolean isQuarterStart) {
int months[] = { 1, 4, 7, 10 };
if (!isQuarterStart) {
months = new int[] { 3, 6, 9, 12 };
}
if (month >= 2 && month <= 4)
return months[0];
else if (month >= 5 && month <= 7)
return months[1];
else if (month >= 8 && month <= 10)
return months[2];
else
return months[3];
}