JAVA 获取每周第一天和最后一天,并可自定义每周起始天为周几

如果对你有帮助记得素质三连~

转载请注明出处~

欢迎批评指点~

https://blog.csdn.net/L_Open2021/article/details/127327416

需求

之前是以周一为每周起始天,后面需求要改成以周五为每周起始天。

网上没找到好用的方案只能自己写了。

下面直接贴代码

    /**
	 * @Description: 获取当前周第一天(周一)
	 * @param date        当前时间
	 * @param modifyValue 预设值 设定周几为第一天,1-7为周一到周日
	 * @Author: wsp
	 **/
	public static Date getWeekStart(Date date, Integer modifyValue) {
		//判断为空 或者 不在[1,7]区间。。默认为1
		if (modifyValue == null || (modifyValue<1 || modifyValue > 7)) modifyValue = 1;

		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);

		//如果以周日为默认,则直接用国际日历,当前时间的第一天即可
		if (modifyValue == 7) {
			calendar.set(Calendar.DAY_OF_WEEK, 1);
			return calendar.getTime();
		}

		// 获取当前为周几(国际日历周日为1,改为周一为1)
		int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

		if (dayOfWeek > 1 && dayOfWeek <= 7) {
			dayOfWeek = dayOfWeek - 1;
		} else if (dayOfWeek == 1) {
			dayOfWeek = 7;
		}

		/**
		 * 如果当前日期大于等于设定日期 , 并且当前时间不是周日
		 * 		则: 直接从本周取设定日期的那一天
		 * 		否则:取上一周的设定日期的那一天
		 */
		if (dayOfWeek >= modifyValue && dayOfWeek != 7) {
			//直接从本周取设定日期的那一天
			calendar.set(Calendar.DAY_OF_WEEK, modifyValue + 1);

			return calendar.getTime();
		} else {
			//获取上一周的某个时间,当前时间-7即可,
			Calendar calendar2 = Calendar.getInstance();
			calendar2.setTime(date);
			calendar2.add(Calendar.DAY_OF_MONTH, -7);

			Date date1 = calendar2.getTime();

			Calendar calendar3 = Calendar.getInstance();
			calendar3.setTime(date1);
			//上一周的设定日期
			calendar3.set(Calendar.DAY_OF_WEEK, modifyValue + 1);

			return calendar3.getTime();
		}
	}

	/**
	 * @Description: 获取当前周最后一天(周日)
	 * @param date        当前时间
	 * @param modifyValue 浮动值,默认周一为一周开始
	 * @Author: wsp
	 **/
	public static Date getWeekEnd(Date date, Integer modifyValue) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(getWeekStart(date, modifyValue));
		calendar.add(Calendar.DAY_OF_MONTH, 6);
		return calendar.getTime();
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值