java实现请假时间判断

笔记:
需求分析:
每周上班6天
夏季
早上8:30-12:00
下午14:00-17:30
冬季
早上8:30-12:00
下午14:30-18:00

请假最低为半天

按照上午8:00-12:00,下午14:00-18:00计算,包括了夏季和冬季时间,规律分布如下在这里插入图片描述

public String getDouble(HttpServletRequest request) throws ParseException {
		//参数格式,前端使用layui框架
		//String endTime ="Wed Jan 01 2020 00:00:00 GMT+0800 (中国标准时间)";
		//String startTime ="Tue Dec 31 2019 00:00:00 GMT+0800 (中国标准时间)";

		String startTime = request.getParameter("startTime");
		String endTime = request.getParameter("endTime");
		Double num=0d;//请假天数;

		//转成date
		Date start = new Date(startTime);
		Date end = new Date(endTime);

		//调用Calendar 类
		Calendar cStart=Calendar.getInstance();
		Calendar cEnd=Calendar.getInstance();

		cStart.setTime(start);
		cEnd.setTime(end);

		//获取两个时间的毫秒值
		long endSeconds = cEnd.getTimeInMillis();
		long startSeconds = cStart.getTimeInMillis();
		//判断结束时间是否大于开始时间
		if (endSeconds<startSeconds){
			return "fail";
		}
		//计算小时差值
		double hourNum=(endSeconds-startSeconds)/1000/60/60;

		//获取开始和结束时间是一年的第几周,判断是否是同一周,
		// 如果一周跨年,则这周算新一年的第一周
		int weekEndNum = cEnd.get(Calendar.WEEK_OF_YEAR);
		int weekStartNum = cStart.get(Calendar.WEEK_OF_YEAR);

		while (true){
			if (hourNum<=24){
				if (hourNum<=4){//半天
					num=num+0.5;
					break;
				}
				if (hourNum<=24&&hourNum>4){//1天
					num=num+1;
					break;
				}
			}else if (hourNum>24){

				hourNum = hourNum - 24;
				num++;
			}
		}
		int week = weekEndNum - weekStartNum;
		num=num-week;//跨几周,减去几天
		return num+"";
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值