栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

Calendar类获取本月的第一天和最后一天,最近3个月的时间范围,本季度,上季度的时间范围

Java 更新时间:发布时间: 百科书网 趣学号
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];
}

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/270386.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号