日期工具类

package com.knowledge.system.dateutil;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @program: zhs-pom
 * @description: 时间日期工具类
 * @author: bo.hu
 * @create: 2019-08-01 15:14
 **/
public class DateUtilByHb {

    /** 日期字符串格式 "yyyyMM" */
    public final static String DATE_YYYYMM = "yyyyMM";

    /** 日期字符串格式 "yyyyMMdd" */
    public final static String DATE_YYYYMMDD = "yyyyMMdd";

    /** 日期字符串格式 "yyyy-MM-dd HH:mm:ss" */
    public final static String DATE_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";

    /** 日期字符串格式 "yyyy-MM-dd HH:mm" */
    public final static String DATE_YYYY_MM_DD_HH_MM = "yyyy-MM-dd HH:mm";

    /** 日期字符串格式 "yyyy-MM-dd HH" */
    public final static String DATE_YYYY_MM_DD_HH = "yyyy-MM-dd HH";

    /** 日期字符串格式 "yyyy-MM-dd" */
    public final static String DATE_YYYY_MM_DD = "yyyy-MM-dd";

    /** 日期字符串格式 "yyyy-MM" */
    public final static String DATE_YYYY_MM = "yyyy-MM";

    /** 日期字符串格式 "yyyy" */
    public final static String DATE_YYYY= "yyyy";

    /** 日期字符串格式 "MM" --月*/
    public final static String DATE_MM= "MM";

    /** 日期字符串格式 "dd" */
    public final static String DATE_dd= "dd";

    /** 日期字符串格式 "HH" */
    public final static String DATE_HH= "HH";

    /** 日期字符串格式 "mm" --分*/
    public final static String DATE_mm= "mm";

    /** 日期字符串格式 "ss" --分*/
    public final static String DATE_ss= "ss";


    /** 获取年*/
    public final static int Year=0;
    /** 获取月*/
    public final static int Month=1;
    /** 获取日*/
    public final static int Day=2;
    /** 获取时 12小时制*/
    public final static int Hour12=4;
    /** 获取时 24小时制*/
    public final static int Hour24=5;
    /** 获取分*/
    public final static int Min=6;
    /** 获取秒*/
    public final static int Sec=7;
    /** 一个月中第几周*/
    public final static int WEEK_OF_MONTH=8;
    /** 一年中第几周*/
    public final static int WEEK_OF_YEAR=9;
    /** 星期几,从周日开始*/
    public final static int DAY_OF_WEEK=10;
    /** 一月中第几天*/
    public final static int DAY_OF_MONTH=11;
    /** 一年中第几天*/
    public final static int DAY_OF_YEAR=12;


    /**
    * @Description: 获取系统当前日期
    * @Param: []
    * @return: java.util.Date
    * @Author: bo.hu
    * @Date: 2019/8/15
    */
    public static Date now(){
        return new Date(System.currentTimeMillis());
    }


    /**
     * @Description:  给定日期date,以pattern格式返回before天前日期的字符串  前:before为负数,后:before为正,【日期--》字符串】,flag=0日加减,flag=1月加减
     * @Param: [date, pattern, before]
     * @return: java.lang.String
     * @Author: bo.hu
     * @Date: 2019/8/15
     */
    public static String dateToStrFormat(Date date,String pattern,int before ,int flag){
        if(date==null){
            return null;
        }
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        /*日加减*/
        if(flag==0){
            c.add(Calendar.DAY_OF_YEAR,before);
        }
        /*月加减*/
        if(flag==1){
            c.add(Calendar.MONTH,before);
        }
        return new SimpleDateFormat(pattern).format(c.getTime());
    }


    /** 
    * @Description:  获取date日期的年、月、日、时、分、秒
    * @Param: [date] 
    * @return: int 
    * @Author: bo.hu
    * @Date: 2019/8/15 
    */ 
    public static int getData(Date date,int flag){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int result = 0;
        switch(flag){
            case 0: result=calendar.get(Calendar.YEAR);break;
            case 1: result=calendar.get(Calendar.MONTH)+1;break;
            case 2: result=calendar.get(Calendar.DATE);break;
            case 4: result=calendar.get(Calendar.HOUR);break;
            case 5: result=calendar.get(Calendar.HOUR_OF_DAY);break;
            case 6: result=calendar.get(Calendar.MINUTE);break;
            case 7: result=calendar.get(Calendar.SECOND);break;
            case 8: result=calendar.get(Calendar.WEEK_OF_MONTH);break;
            case 9: result=calendar.get(Calendar.WEEK_OF_YEAR);break;
            case 10: result=calendar.get(Calendar.DAY_OF_WEEK);break;
            case 11: result=calendar.get(Calendar.DAY_OF_MONTH);break;
            case 12: result=calendar.get(Calendar.DAY_OF_YEAR);break;
        }
        return result;
    }



    /** 
    * @Description: 将日期字符串dateStr转换成pattern格式的日期【字符串--》日期】
    * @Param: [dateStr, pattern] 
    * @return: java.util.Date 
    * @Author: bo.hu
    * @Date: 2019/8/15 
    */ 
    public static Date strToDateFormat(String dateStr,String pattern){
        Date date= null;
        try {
            date = new SimpleDateFormat(pattern).parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }



    /** 
    * @Description:  计算两个dateStr相差的天数【日期字符串计算】
    * @Param: [startDateStr, endDateStr, pattern]
    * @return: int 
    * @Author: bo.hu
    * @Date: 2019/8/15 
    */ 
    public static int twoDateStrsBetween(String startDateStr,String endDateStr,String pattern){
        SimpleDateFormat sdf=new SimpleDateFormat(pattern);
        Date start= null;
        Date end= null;
        try {
            start = sdf.parse(startDateStr);
            end = sdf.parse(endDateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return twoDatesBetween(start,end);
    }



    /** 
    * @Description:  计算两个date时间相差的天数【日期直接计算】
    * @Param: [start, end] 
    * @return: int 
    * @Author: bo.hu
    * @Date: 2019/8/15 
    */ 
    public static int twoDatesBetween(Date start,Date end){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        try {
            start=sdf.parse(sdf.format(start));
            end=sdf.parse(sdf.format(end));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar calendar=Calendar.getInstance();
        calendar.setTime(start);
        long startTimeInMillis=calendar.getTimeInMillis();
        calendar.setTime(end);
        long endTimeInMillis=calendar.getTimeInMillis();
        long between=(endTimeInMillis-startTimeInMillis)/(1000*3600*24);
        return Integer.parseInt(String.valueOf(between));
    }



}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值