1. 程式人生 > >日期相關工具類方法

日期相關工具類方法

/**
	 * @createTime  :2018年8月23日下午2:25:01
	 * @description :獲取當前日期的  昨日  前日  的時間範圍
	 * @param		:
	 */
	public static Map<String,String> getTwoDaysRange(){
		Map<String,String> resultMap = new HashMap<String, String>();
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Calendar calendar = Calendar.getInstance();
		
		calendar.set(Calendar.DATE, calendar.get(calendar.DATE) -1);//昨天
		calendar.set(Calendar.HOUR_OF_DAY, 0);// 時
		calendar.set(Calendar.MINUTE, 0);// 分
		calendar.set(Calendar.SECOND, 0);// 秒
		String yesStart = sdf.format(calendar.getTime());
		resultMap.put("yesStart", yesStart);
		calendar.set(Calendar.HOUR_OF_DAY, 23);
		calendar.set(Calendar.MINUTE, 59);
		calendar.set(Calendar.SECOND, 59);
		String yesEnd = sdf.format(calendar.getTime());
		resultMap.put("yesEnd", yesEnd);
		
		calendar.set(Calendar.DATE, calendar.get(calendar.DATE) -1);//前天  {包括上面的-1,這裡再-1,故整體上-2}
		calendar.set(Calendar.HOUR_OF_DAY, 0);// 時
		calendar.set(Calendar.MINUTE, 0);// 分
		calendar.set(Calendar.SECOND, 0);// 秒
		String befStart = sdf.format(calendar.getTime());
		resultMap.put("befStart", befStart);
		calendar.set(Calendar.HOUR_OF_DAY, 23);
		calendar.set(Calendar.MINUTE, 59);
		calendar.set(Calendar.SECOND, 59);
		String befEnd = sdf.format(calendar.getTime());
		resultMap.put("befEnd", befEnd);
		return resultMap;
	}
 /**
	 * @createTime  :2018年9月21日上午10:58:17
	 * @description :時間新增N個小時 [N為負值 減少N小時]   2018年9月21日上午10:38:06  
	 */
	public static Date plusNhour(Date date,int N) {
		if(date == null){
			return null;
		}else{
			 Calendar calendar = Calendar.getInstance();
		     calendar.setTime(date);
		     calendar.add(Calendar.HOUR, N);//時
		     return calendar.getTime(); 
		}
	}
	
/*
	 * 同上plusNhour方法
	 * str  引數為格式為yyyy-MM-dd HH:mm:ss
	 */
	public static String plusNhourStrParam(String str,int N) throws ParseException {
		
		if(str == null || "".equals(str)){
			//不做任何處理返回
		}else{
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			Date tempDate = sdf.parse(str);
			Calendar calendar = Calendar.getInstance();
			calendar.setTime(tempDate);
		    calendar.add(Calendar.HOUR, N);//時
		    Date resDate = calendar.getTime(); 
		    str = sdf.format(resDate);
		}
		return str;
	}
/**

	 * @createTime  :2018年8月22日下午4:30:16
	 * @description :獲取當前日期所在的  日、周、月
	 * @param		:flag   
	 * 					0	獲取當前時間的所在日期
	 * 					1	獲取當前時間的所在  周   第一天  和  最後一天  的日期
	 * 					2        獲取當前時間的所在   月   第一天  和  最後一天  的日期
	 */
	public static Map<String,String> getYmd(String flag){
		Map<String,String> resultMap = new HashMap<String, String>();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.HOUR_OF_DAY, 0);// 時
		calendar.set(Calendar.MINUTE, 0);// 分
		calendar.set(Calendar.SECOND, 0);// 秒
		Date dateNow = calendar.getTime();
		if(ConstantUtil.STRNUM0.equals(flag)){
			String dateTodayStart = sdf.format(dateNow);
			calendar.set(Calendar.HOUR_OF_DAY, 23);
			calendar.set(Calendar.MINUTE, 59);
			calendar.set(Calendar.SECOND, 59);
			String dateTodayEnd = sdf.format(calendar.getTime());
			resultMap.put("start", dateTodayStart);
			resultMap.put("end", dateTodayEnd);
		}else if(ConstantUtil.STRNUM1.equals(flag)){
			calendar.set(calendar.DAY_OF_WEEK, calendar.MONDAY);
			String weekhand = sdf.format(calendar.getTime());
			calendar.set(Calendar.DATE, calendar.get(calendar.DATE) + 6);
			calendar.set(Calendar.HOUR_OF_DAY, 23);
			calendar.set(Calendar.MINUTE, 59);
			calendar.set(Calendar.SECOND, 59);
			String weeklast = sdf.format(calendar.getTime());
			resultMap.put("start", weekhand);
			resultMap.put("end", weeklast);
		}else if(ConstantUtil.STRNUM2.equals(flag)){
			calendar.add(Calendar.MONTH, 0);
			calendar.set(Calendar.DAY_OF_MONTH,1);//設定為1號,當前日期既為本月第一天 
	        String monthStart = sdf.format(calendar.getTime());
	        //獲取當前月最後一天
	        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));  
	        calendar.set(Calendar.HOUR_OF_DAY, 23);
			calendar.set(Calendar.MINUTE, 59);
			calendar.set(Calendar.SECOND, 59);
	        String monthEnd = sdf.format(calendar.getTime());
	        resultMap.put("start", monthStart);
			resultMap.put("end", monthEnd);
		}
		return resultMap;		
	}
	
/*
	 *  日期 比較方法
	 */
	public static String dateCompar(Date d1,Date d2){
		Calendar calendar = Calendar.getInstance();
        calendar.setTime(d1);
        int day1 = calendar.get(Calendar.DAY_OF_YEAR);
        calendar.setTime(d2);
        int day2 = calendar.get(Calendar.DAY_OF_YEAR);
        if((day2 - day1) == 0){
        	return "0";
        }else if((day2 - day1) > 0){
        	return "-1";
        }else{
        	return "1";
        }
	}