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+"";
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章