0
点赞
收藏
分享

微信扫一扫

DateUtil工具类

鱼板番茄 2022-04-04 阅读 65
java

前言

备份一下:


代码实现:

public class DateUtil {

	public static String getTime(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String time = sdf.format(date);
		return time;
	}
    
	/**
	 * 获取传入时间的yyyy-MM-dd HH格式时间
	 * @param date
	 * @return
	 */
	public static String getYMDHTime(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
		String time = sdf.format(date);
		return time;
	}
	
	public static Date getDateByYMDHMS(String ymdhms) {
    	SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			return sd.parse(ymdhms);
		} catch (ParseException e) {
			e.printStackTrace();
		}
    	return null;
    }
	
    public static String getCurrentMonthFirstDay(Date date) {
    	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
    	String time = sdf.format(date)+"-01";
		return time;
    }
    
    /**
     * 前几天日期封装
     * @param sdate
     * @param days
     * @return
     */
    public static Map<String, ParamDto> getPastDays(Date sdate, int days) {
    	Map<String, ParamDto> returnMap = new LinkedHashMap<>();
    	String key = "day_";
    	int num = 1;
    	for(int i=days-1;i>=0;i--) {
        	Date calcTime = calcTime(sdate, -i);
        	ParamDto param = new ParamDto();
        	String param1 = getYMD(calcTime);
        	param.setParam1(param1);
        	int week = getDayOfWeek(param1);
        	String param2 = "";
        	if(week==1) {
        		param2 = "星期日";
        	}else if(week==2) {
        		param2 = "星期一";
        	}else if(week==3) {
        		param2 = "星期二";
        	}else if(week==4) {
        		param2 = "星期三";
        	}else if(week==5) {
        		param2 = "星期四";
        	}else if(week==6) {
        		param2 = "星期五";
        	}else if(week==7) {
        		param2 = "星期六";
        	}
        	param.setParam2(param2);
        	returnMap.put(key+num, param);
        	num++;
    	}
    	return returnMap;
    }
    
    /**
     * 前几周日期封装
     * @param sdate
     * @param weeks
     * @return
     */
    public static Map<String,ParamDto> getPastWeeks(Date sdate, int weeks) {
    	Map<String, ParamDto> returnMap = new LinkedHashMap<>();
    	String key = "week_";
    	int num = 1;
    	for(int i=weeks;i>0;i--) {
    		GregorianCalendar calendar = new GregorianCalendar();
        	calendar.setTime(sdate);
        	calendar.add(GregorianCalendar.WEEK_OF_YEAR, -i);
        	Date calcTime = calendar.getTime();
        	ParamDto param = new ParamDto();
        	String param1 = getYMD(calcTime);
        	param.setParam1(param1);
        	Date calcWeek = calcTime(calcTime, 6);
        	String param2 = getYMD(calcWeek);
        	param.setParam2(param2);
        	returnMap.put(key+num, param);
        	num++;
    	}
    	return returnMap;
    }
    
    /**
     * 上周本周下周三周日期控件接口
     * @param sdate
     * @return
     */
    public static Map<String,List<String>> getthreeWeeks(Date sdate) {
    	Map<String, List<String>> returnMap = new LinkedHashMap<>();
    	String key = "week_";
    	int num = 1;
    	for(int i=-1;i<2;i++) {
    		GregorianCalendar calendar = new GregorianCalendar();
        	calendar.setTime(sdate);
        	calendar.add(GregorianCalendar.WEEK_OF_YEAR, i);
        	Date calcTime = calendar.getTime();
        	List<String> list = new ArrayList<>();
        	for(int j=0;j<7;j++) {
        		Date calcWeek = calcTime(calcTime, j);
        		String param = getYMD(calcWeek);
        		list.add(param);
        	}
        	returnMap.put(key+num, list);
        	num++;
    	}
    	return returnMap;
    }
    
    public static String getYMD(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String time = sdf.format(date);
		return time;
	}
    
    /**
	*@param date 是为则默认今天日期、可自行设置“2013-06-03”格式的日期
	*@return 返回1是星期日、2是星期一、3是星期二、4是星期三、5是星期四、6是星期五、7是星期六
	*/
    public static int getDayOfWeek(String date){
    	Calendar cal = Calendar.getInstance();
    	if (date.equals("")) {
    		cal.setTime(new Date(System.currentTimeMillis()));
    	}else {
    		SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
    		try {
				cal.setTime(new Date(sd.parse(date).getTime()));
			} catch (ParseException e) {
				e.printStackTrace();
			}
    	}
    	return cal.get(Calendar.DAY_OF_WEEK);
	}
    
    public static Date calcTime(Date sdate,int days) {
    	GregorianCalendar calendar = new GregorianCalendar();
    	calendar.setTime(sdate);
    	calendar.add(GregorianCalendar.DAY_OF_MONTH, days);
    	Date calcTime = calendar.getTime();
		return calcTime;
	}
    
    public static Date getDutyDateTime(String sdate,int stime) {
    	try {
    		SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
			Date date = sd.parse(sdate);
			GregorianCalendar calendar = new GregorianCalendar();
	    	calendar.setTime(date);
	    	calendar.add(GregorianCalendar.HOUR_OF_DAY, stime);
	    	Date calcTime = calendar.getTime();
			return calcTime;
		} catch (ParseException e) {
			e.printStackTrace();
		}
    	return new Date();
    }
    
    public static Date getThisWeekMonday(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        // 获得当前日期是一个星期的第几天
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
        if (1 == dayWeek) {
            cal.add(Calendar.DAY_OF_MONTH, -1);
        }
        // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        // 获得当前日期是一个星期的第几天
        int day = cal.get(Calendar.DAY_OF_WEEK);
        // 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
        cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
        return cal.getTime();
    }
    
    public static String getyyyyMMddHHmmss(Date date) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
		String time = sdf.format(date);
		return time;
	}
    
    public static ParamDto getWeekStartAndEnd(Date date) {
    	ParamDto param = new ParamDto();
    	Date monday = getThisWeekMonday(date);
    	param.setParam1(getYMD(monday));
    	Date sunday = calcTime(monday, 6);
    	param.setParam2(getYMD(sunday));
		return param;
    }
    
    public static String getMd(String date) {
    	SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			Calendar cal = Calendar.getInstance();
			cal.setTime(new Date(sd.parse(date).getTime()));
			Date dateTime = cal.getTime();
			SimpleDateFormat sdf = new SimpleDateFormat("M月d日");
			String time = sdf.format(dateTime);
			return time;
		} catch (ParseException e) {
			e.printStackTrace();
		}
    	return null;
    }
    
    public static String addDateByHour(Date sdate,int hour) {
		GregorianCalendar calendar = new GregorianCalendar();
    	calendar.setTime(sdate);
    	calendar.add(GregorianCalendar.HOUR_OF_DAY, hour);
    	Date calcTime = calendar.getTime();
		return getTime(calcTime);
   }
    
    /**
	 * 计算两个日期之间相差的天数
	 * @param smdate 较小的时间
	 * @param bdate  较大的时间
	 * @return 相差天数
	 * @throws ParseException
	 */
	public static int getDaysBetween(Date smdate,Date bdate) throws ParseException
	{
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		smdate=sdf.parse(sdf.format(smdate));
		bdate=sdf.parse(sdf.format(bdate));
		Calendar cal = Calendar.getInstance();
		cal.setTime(smdate);
		long time1 = cal.getTimeInMillis();
		cal.setTime(bdate);
		long time2 = cal.getTimeInMillis();
		long between_days=(time2-time1)/(1000*3600*24);
		return Integer.parseInt(String.valueOf(between_days));
	}

	/**
	 *
	 * @param time  把时间戳转成字符串
	 * @return 返回 字符串时间:"3天12小时"
	 */
	 public static String getStrTimeByLongTime(long time){
		 long day = 0;
		 long hour = 0;
		 day = time / (24 * 60 * 60 * 1000);
		 hour = (time / (60 * 60 * 1000) - day * 24);
		 String tempTime="";
		 if(day ==0 && hour !=0){
			 tempTime=hour+"小时";
		 }
		 if(day !=0 && hour ==0){
			 tempTime=day+"天";
		 }
		 if(day!=0 && hour !=0){
			 tempTime=day+"天"+hour+"小时";
		 }
		 return tempTime;
	 }

	/**
	 * 获取本周的第一天
	 * @return String
	 * **/
	public static String getWeekStart(){
		Calendar cal=Calendar.getInstance();
		cal.add(Calendar.WEEK_OF_MONTH, 0);
		cal.set(Calendar.DAY_OF_WEEK, 2);
		Date time=cal.getTime();
		return new SimpleDateFormat("yyyy-MM-dd").format(time)+" 00:00:00";
	}

	/**
	 * 获取本月开始日期
	 * @return String
	 * **/
	public static String getMonthStart(){
		Calendar cal=Calendar.getInstance();
		cal.add(Calendar.MONTH, 0);
		cal.set(Calendar.DAY_OF_MONTH, 1);
		Date time=cal.getTime();
		return new SimpleDateFormat("yyyy-MM-dd").format(time)+" 00:00:00";
	}
举报

相关推荐

0 条评论