获取当前时间的本周的周一至周日的开始与结束时间戳

获取当前时间的本周的周一至周日的开始与结束时间戳


public List<Week> getWeekTime(){
		//本周开始与结束时间 的时间戳数组
		List<Week> week = new ArrayList<>();
		//一天开始与结束时间毫秒差
		long millisecond = 86399999l;

		Calendar cal = Calendar.getInstance();
		// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
		cal.setFirstDayOfWeek(Calendar.MONDAY);
		// 获得当前日期是一个星期的第几天
		int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
		if(dayWeek==1){
			dayWeek = 8;
		}

		// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
		cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - dayWeek);
		//设置日历时间为周一
		cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
		//设置开始毫秒数为0
		cal.set((Calendar.MILLISECOND),0);
		Date mondayDate = cal.getTime();

		//周一的开始时间与结束时间数组
		Week sunDay = new Week();
		sunDay.setStartTime(cal.getTime().getTime());
		sunDay.setEndTime(cal.getTime().getTime()+millisecond);
		week.add(sunDay);

		cal.add(Calendar.DATE, 4 +cal.getFirstDayOfWeek());
		Date sundayDate = cal.getTime();

		Calendar calBegin = Calendar.getInstance();
		// 使用给定的 Date 设置此 Calendar 的时间
		calBegin.setTime(mondayDate);

		//测试此日期是否在指定日期之后
		while (sundayDate.after(calBegin.getTime())) {
			// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
			calBegin.add(Calendar.DAY_OF_MONTH, 1);
			//每天的开始时间与结束时间存储的数组
			Week  day = new Week ();
			day.setStartTime(calBegin.getTime().getTime());
			day.setEndTime(calBegin.getTime().getTime()+millisecond);
			week.add(day);
		}
		return week;
	}

Week类

public class Week {
	@JsonSerialize(using = ToStringSerializer.class) //防止存取值时因long长度原因精度丢失
    private Long startTime;
    @JsonSerialize(using = ToStringSerializer.class)
    private Long endTime;

    public Long getStartTime() {
        return startTime;
    }

    public void setStartTime(Long startTime) {
        this.startTime = startTime;
    }

    public Long getEndTime() {
        return endTime;
    }

    public void setEndTime(Long endTime) {
        this.endTime = endTime;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值