DateUtil

Posted Never be the same

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DateUtil相关的知识,希望对你有一定的参考价值。

public class GenernalDate {
    //一天秒数
    public final static long MILLISECONDS_OF_DAY = 1000 * 60 * 60 * 24;
    public final static int NULL_DATE = 19000101;
    private final static int days[] = {31,29,31,30,31,30,31,31,30,31,30,31};

    public final static int DATETIME_LENGTH = 14;
    public final static int DATE_LENGTH = 8;
    public final static int TIME_LENGTH = 6;
    public final static int TIME_LENGTH_2 = 5;//091213 中在数据库中存放的是91213



    /**
     * 日期转换
     * @param date 三种格式  20100421153055|20100421|153055
     * @return
     * @throws ParseException
     * @throws XdealException
     */
    public static Date parse(long date)throws BusinessException{
        String dateStr = String.valueOf(date);

        boolean isDate = false,isTime = false,isDateTime = false;
        int length = dateStr.length();
        if(length==DATETIME_LENGTH){
            isDateTime = true;
        }else if(length==DATE_LENGTH){
            isDate = true;
        }else if(length==TIME_LENGTH || length==TIME_LENGTH_2){
            isTime = true;
        }else {
            throw new BusinessException("Date format is not correct["+dateStr+"]");
        }
        SimpleDateFormat sf = (SimpleDateFormat) DateFormat.getDateInstance();
        try{
            if (isDateTime) { //日期时间
                sf.applyPattern("yyyyMMddHHmmss");
                return sf.parse(dateStr);
            } else if (isDate) {
                sf.applyPattern("yyyyMMdd");
                return sf.parse(dateStr);
            } else if (isTime) {
                sf.applyPattern("HHmmss");
                return sf.parse(dateStr);
            }
        }catch(ParseException pe){
            throw new BusinessException(pe.getMessage());
        }

        return new Date(0);
    }



    //--------------------显示格式化日期-------------------------------

    /**
     * 返回默认格式的字符串日期 时间
     * @param dateTime  日期+时间
     * @return yyyy-MM-dd HH:mm:ss格式的字符串日期 时间
     */
    public static String formatDateTime(Date dateTime){
        SimpleDateFormat sf = (SimpleDateFormat) DateFormat.getDateInstance();
        sf.applyPattern("yyyy-MM-dd HH:mm:ss");
        return sf.format(dateTime);
    }

    /**
     * 返回默认格式的字符串日期 时间
     * @param dateTime  日期+时间:20100421120101
     * @return yyyy-MM-dd HH:mm:ss格式的字符串日期 时间
     */
    public static String formatDateTime(long dateTime)throws BusinessException{
        SimpleDateFormat sf = (SimpleDateFormat) DateFormat.getDateInstance();
        sf.applyPattern("yyyy-MM-dd HH:mm:ss");
        return sf.format(parse(dateTime));
    }


    /**
     * 返回字符串日期
     * @param date
     * @return yyyy-MM-dd格式的字符串日期
     */
    public static String formatDate(Date date) {
        SimpleDateFormat sf = (SimpleDateFormat) DateFormat.getDateInstance();
        sf.applyPattern("yyyy-MM-dd");
        return sf.format(date);
    }

    /**
     * 返回字符串日期
     * @param date 日期 20100421
     * @return yyyy-MM-dd格式的字符串日期
     */
    public static String formatDate(int date)throws BusinessException {
        SimpleDateFormat sf = (SimpleDateFormat) DateFormat.getDateInstance();
        sf.applyPattern("yyyy-MM-dd");
        return sf.format(parse(date));
    }

    /**
     * 返回字符串时间
     * @param time
     * @return HH:mm:ss格式的字符串日期
     */
    public static String formatTime(Date time) {
        SimpleDateFormat sf = (SimpleDateFormat) DateFormat.getDateInstance();
        sf.applyPattern("HH:mm:ss");
        return sf.format(time);
    }

    /**
     * 返回字符串时间
     * @param time 时间 120130
     * @return HH:mm:ss格式的字符串日期
     */
    public static String formatTime(int time)throws BusinessException {
        StringBuffer buffer = new StringBuffer();
        buffer.append(time);
        int a = 6-buffer.length();
        for(int i=0;i<a;i++){
            buffer.insert(0, "0");        //在stringbuffer 的第一个位置添加  0
        }
         return formatTime(buffer.toString());
    }
    /**
     *
     * @param time
     * @return HH:mm:ss格式的字符串日期
     */
  private static String formatTime(String time){
    SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
    if(time.indexOf(":")!=-1){
        sf.applyPattern("HH:mm:ss");
    }else{
        sf.applyPattern("HHmmss");
    }
    Date date=null;
    try {
        date = sf.parse(time);
    } catch (ParseException e) {
        date=new Date();
    }
    sf.applyPattern("HH:mm:ss");
    return sf.format(date);
}

    /**
     * 返回日期
     * @param
     * @return int 20140523
     */
    public static int formatDateStrToDateInt(String datestr)throws RuntimeException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = sdf.parse(datestr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        if(date == null){
            return 0;
        }
        return getNumericDate(date);
    }

    //------------------------读取日期--------------------------------------

    /**
     * 读取当前的日期+时间
     * return long 20100421132630
     */
    public static long getNumericDateTime(){
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("yyyyMMddHHmmss");
        String dateTime = sf.format(Calendar.getInstance().getTime());
        return Long.parseLong(dateTime);
    }

    /**
     * 读取当前的日期+时间
     * return String 2010-04-21 13:26:30
     */
    public static String getStringDateTime(){
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("yyyy-MM-dd HH:mm:ss");
        return sf.format(Calendar.getInstance().getTime());
    }

    /**
     * Date类型(日期+时间) 转换为 long 类型
     * @param dateTime
     * @return long 20100421132630
     */
    public static long getNumericDateTime(Date dateTime){
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("yyyyMMddHHmmss");
        return Long.parseLong(sf.format(dateTime));
    }

    /**
     * 读取当前日期
     * @return int 20100421
     */
    public static int getNumericDate(){
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("yyyyMMdd");
        String date = sf.format(Calendar.getInstance().getTime());
        return Integer.parseInt(date);
    }

    /**
     * 读取当前的日期
     * return String 2010-04-21
     */
    public static String getStringDate(){
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("yyyy-MM-dd");
        return sf.format(Calendar.getInstance().getTime());
    }

    /**
     * Date类型  转换为 int 类型
     * @param date
     * @return int 20100421
     */
    public static int getNumericDate(Date dateTime){
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("yyyyMMdd");
        return Integer.parseInt(sf.format(dateTime));
    }

    /**
     * String类型  转换为 int 类型
     * @param date
     * @return int 20100421
     */
    public static int getDateStrToNumeric(String dateTimeStr)throws ParseException {
        Date date = parseDate(dateTimeStr);
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("yyyyMMdd");
        return Integer.parseInt(sf.format(date));
    }

    /**
     * String类型  转换为 int 类型
     * @param time
     * @return int 131223
     */
    public static int getDateStrToTimeInt(String timeStr)throws ParseException {
        Date date = parseTime(timeStr);
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("HHmmss");
        return Integer.parseInt(sf.format(date));
    }

    /**
     * 读取当前时间
     * @return int 132630
     */
    public static int getNumericTime(){
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("HHmmss");
        String date = sf.format(Calendar.getInstance().getTime());
        return Integer.parseInt(date);
    }

    /**
     * 读取当前时间
     * return String 13:26:30
     */
    public static String getStringTime(){
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("HH:mm:ss");
        return sf.format(Calendar.getInstance().getTime());
    }

    /**
     * Date类型  转换为 int 类型
     * @param time
     * @return int 132630
     */
    public static int getNumericTime(Date dateTime){
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("HHmmss");
        return Integer.parseInt(sf.format(dateTime));
    }


    /**
     * + 表达式 d,w,m,y
     * @param date 起始日期
     * @param exp 表达式类型:d/D 天; w/W 周; m/M 月; y/Y 年
     * @param mul 乘数,一般是第mul期,如exp:7d,mul:2,则为加7*2d
     * @param monthEnd 月末是否对齐
     * @return 计算后的Date日期
     * @throws ParseException
     * @throws NumberFormatException
     */
    public static int add(int date,String exp, int mul, boolean monthEnd)throws BusinessException{
        if(null==exp||exp.length() <= 1 ) {
            throw new BusinessException("payFreq is null!");
        }
        exp=exp.trim();
        int len = exp.length();
        int num = Integer.parseInt(exp.substring(0, len - 1)) * mul;
        int ndate = 0;
        switch (exp.charAt(len - 1)) {
        case ‘d‘:
        case ‘D‘:
            return addNumericDays(date, num);
        case ‘w‘:
        case ‘W‘:
            return addNumericDays(date, num * 7);
        case ‘m‘:
        case ‘M‘:
            ndate =  addNumericMonths(date, num);
            break;
        case ‘y‘:
        case ‘Y‘:
            ndate =   addNumericYears(date, num);
            break;
        default:
            return addNumericDays(date, Integer.parseInt(exp));
        }
        if( monthEnd && ndate != 0  ) {//&& isMonthEnd(date)
            return getMonthEnd(ndate);
        } else {
            return ndate;
        }
    }

    /**
     * 增加清算速度或期限
     * @param date 日期 20100421
     * @param term 0|1|1d|1w|1w|1m|1y
     * @return 日期 20100421
     * @throws Exception
     */
    public static int addTerm(int date,String term)throws BusinessException{
        if(term == null || term.trim().length()==0){
            throw new BusinessException("payFreq is null!");
        }else if(term.trim().length()==1){
            int days = Integer.parseInt(term);
            return addNumericDays(date,days);
        }else {
            return add(date,term,1,false);
        }
    }


    /**
     * 返回日期的月末时间
     * @param date
     * @return Date
     */
    public static int getMonthEnd(int date)throws BusinessException {
        GregorianCalendar cal = new GregorianCalendar();
        cal.setTime(parse(date));
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH));
        return getNumericDate(cal.getTime());
    }


    /**
     * 返回日期的月初时间
     * @param date
     * @return Date
     */
    public static int getMonthStart(int date)throws BusinessException {
        GregorianCalendar cal = new GregorianCalendar();
        cal.setTime(parse(date));
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(GregorianCalendar.DAY_OF_MONTH));
        return getNumericDate(cal.getTime());
    }

    /**
     * 两日期相减
     * @param endDate 到期日期
     * @param startDate 开始日期
     * @return 天数
     * @throws ParseException
     */
    public static int offsetDays(int endDate,int startDate) throws BusinessException{
        return offsetDays(parse(endDate),parse(startDate));
    }

    /**
     * 两个日期相减,参数为Date型
     * @param endDate
     * @param startDate
     * @return int 天数
     */
    public static int offsetDays(Date endDate, Date startDate) {
        return (int) ((endDate.getTime() - startDate.getTime()) / MILLISECONDS_OF_DAY);
    }

    /**
     * 读取月份
     * @param date
     * @return
     * @throws ParseException
     */
    public static int getMonth(int date) throws BusinessException{
        Calendar cl = Calendar.getInstance();
        cl.setTime(parse(date));
        return cl.get(Calendar.MONTH);
    }

    //-----------------------日期运算-------------------------------

    /**
     * 增加年
     * @param date 20100421
     * @param years 年数
     * @return int 20100421
     * @throws ParseException
     * @throws Exception
     */
    public static int addNumericYears(int date,int years) throws BusinessException{
        Calendar cl = Calendar.getInstance();
        cl.setTime(parse(date));
        cl.add(Calendar.YEAR, years);
        return getNumericDate(cl.getTime());
    }

    /**
     * 增加年
     * @param date 20100421143022
     * @param years 年数
     * @return long 20100421143022
     * @throws Exception
     */
    public static long addNumericYears(long dateTime,int years)throws BusinessException{
        Calendar cl = Calendar.getInstance();
        cl.setTime(parse(dateTime));
        cl.add(Calendar.YEAR, years);
        return getNumericDateTime(cl.getTime());
    }


    /**
     * 增加月
     * @param date 20100421
     * @param months 月数
     * @return int 20100421
     * @throws ParseParseException
     * @throws ParseException
     */
    public static int addNumericMonths(int date,int months) throws BusinessException{
        Calendar cl = Calendar.getInstance();
        cl.setTime(parse(date));
        cl.add(Calendar.MONTH, months);
        return getNumericDate(cl.getTime());
    }

    /**
     * 增加月
     * @param date 20100421143022
     * @param months 月数
     * @return long 20100421143022
     * @throws ParseException
     */
    public static long addNumericMonths(long dateTime,int months)throws BusinessException{
        Calendar cl = Calendar.getInstance();
        cl.setTime(parse(dateTime));
        cl.add(Calendar.MONTH, months);
        return getNumericDateTime(cl.getTime());
    }

    /**
     * 增加日
     * @param date 20100421
     * @param days 日数
     * @return int 20100421
     * @throws ParseParseException
     * @throws ParseException
     */
    public static int addNumericDays(int date,int days) throws BusinessException{
        return getNumericDate(new Date(parse(date).getTime()+days*MILLISECONDS_OF_DAY));
    }

    /**
     * 增加日
     * @param date 20100421
     * @param days 日数
     * @return int 20100421
     * @throws ParseParseException
     * @throws ParseException
     */
    public static int addDays(int date,String exp) throws BusinessException{
        int days=getDays(exp);
        return getNumericDate(new Date(parse(date).getTime()+days*MILLISECONDS_OF_DAY));
    }

    /**
     * 增加日
     * @param date 20100421143022
     * @param days 日数
     * @return long 20100421143022
     * @throws ParseException
     */
    public static long addNumericDays(long dateTime,int days)throws BusinessException{
        return getNumericDateTime(new Date(parse(dateTime).getTime()+days*MILLISECONDS_OF_DAY));
    }

    /**
     * 增加小时
     * @param dateTime 20100421143022
     * @param hours 小时数
     * @return long 20100421143022
     * @throws ParseException
     */
    public static long addNumericHours(long dateTime,int hours)throws BusinessException{
        Calendar cl = Calendar.getInstance();
        cl.setTime(parse(dateTime));
        cl.add(Calendar.HOUR, hours);
        return getNumericDateTime(cl.getTime());
    }


    /**
     * 增加分
     * @param dateTime 20100421143022
     * @param minutes 小时数
     * @return long 20100421143022
     * @throws ParseException
     */
    public static long addNumericMinutes(long dateTime,int minutes)throws BusinessException{
        Calendar cl = Calendar.getInstance();
        cl.setTime(parse(dateTime));
        cl.add(Calendar.MINUTE, minutes);
        return getNumericDateTime(cl.getTime());
    }

    /**
     * 增加秒
     * @param dateTime 20100421143022
     * @param seconds 秒
     * @return long 20100421143022
     * @throws ParseException
     */
    public static long addNumericSeconds(long dateTime,int seconds)throws BusinessException{
        Calendar cl = Calendar.getInstance();
        cl.setTime(parse(dateTime));
        cl.add(Calendar.SECOND, seconds);
        return getNumericDateTime(cl.getTime());
    }


    /**
     * 用于有效时间
     * 时间 + 秒数  如果增加的秒数使日期大于24小时,则返回235959
     * @param time 时间
     * @param seconds 秒数
     * @return
     */
    public static int addValidatTimeSeconds(int time,int seconds){
        int sec = time % 100;
        int min = (time/100)%100;
        int hour = time/10000;

        System.out.println("Now Time:Hour["+hour+"]Min["+min+"]Sec["+sec+"]");

        int t_sec = seconds%60;
        int t_min = (seconds%3600)/60;
        int t_hour = seconds/3600;

        System.out.println("Add Time:Hour["+t_hour+"]Min["+t_min+"]Sec["+t_sec+"]");

        if((sec+t_sec)>=60){
            min+=1;
            sec = sec+t_sec - 60;
        }else{
            sec = sec+t_sec ;
        }

        if((min+t_min)>=60){
            hour+=1;
            min = min+t_min-60;
        }else{
            min = min+t_min;
        }

        hour+=t_hour;
        if(hour>=24){
            return 235959;
        }

        return hour*10000+min*100+sec;
    }

    //---------------------日期检查------------------------------------

    /**
     * 检查日期时间
     * @param dateTime 20100421152622
     * @throws ParseException
     */
    public static void checkDateTime(long dateTime)throws BusinessException{
        long orginDateTime = dateTime;
        long newDateTime = getNumericDateTime(parse(dateTime));
        if(orginDateTime!=newDateTime){
            throw new BusinessException("DateTime format not correct["+dateTime+"]");
        }
    }


    /**
     * 检查日期
     * @param date 20100421
     * @throws ParseException
     */
    public static void checkDate(int date)throws BusinessException{
        long orginDate = date;
        long newDate = getNumericDate(parse(date));
        if(orginDate!=newDate){
            throw new BusinessException("Date format not correct["+date+"]");
        }
    }

    /**
     * 检查日期
     * @param date 20100421
     * @return true:格式正确,false:格式错误
     */
    public static boolean checkValueDate(int date){
        boolean flag=true;
        try {
            long orginDate = date;
            long newDate = getNumericDate(parse(date));
            if(orginDate!=newDate){
                flag=false;
            }
        } catch (Exception e) {
            flag=false;
        }
        return flag;
    }


    /**
     * 检查时间
     * @param time 152622
     * @throws ParseException
     */
    public static void checkTime(int time)throws BusinessException{
        long orginTime = time;
        long newTime = getNumericTime(parse(time));
        if(orginTime!=newTime){
            throw new BusinessException("Time format not correct["+time+"]");
        }
    }
    /**
     * 根据int 结构的日期获取Calendar
     * @param date
     * @return
     */
    public static Calendar getCalendarByInt(int date){
        Calendar time=Calendar.getInstance();
        time.clear();
        time.setTime(parse(date));
        return time;
    }
    /**
     * 根据calendar 结构的日期获取int
     * @param date
     * @return
     */
    public static int getIntByCalendar(Calendar calendar){
        return getNumericDate(calendar.getTime());
    }
    // 检验日期格式 年-月- 日
    public static boolean isRightDate(int date) {
        int year = date / 10000;
        int month = (date - year * 10000) / 100;
        int day = date - year * 10000 - month * 100;
        if (year < 1900 || year > 3000) {
            return false;
        }
        if (month > 12 || month < 1) {
            return false;
        }
        if ((year % 4 == 0 || (year % 100 == 0 && year % 400 == 0)) && month == 2) {
            days[1] = 29;
        }
        if (day < 1 || day > days[month - 1]) {
            return false;
        }
        return true;
    }
    /**
     *
     * @param date
     * @param j
     * @return Date
     */
    public static int rollMonth(int date ,int j){
        int tmp = addNumericMonths(date, j - 1);
        return getMonthEnd(tmp);
    }

    /**
     * +月 自然月
     * @param date 起始日期
     * @param months 月数
     * @return 日期加月数后的Date日期
     * @throws ParseException
     */
    public static int addMonths(Date date, int months) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.MONTH, months);
        return getNumericDate(cal.getTime());
    }
    /**
     * +月
     * @param date 起始日期
     * @param months 月数
     * @return 日期加月数后的String日期
     * @throws ParseException
     */
    public static int addMonths(int date, int months) throws ParseException {
        return addNumericMonths((date), months);
    }
    /**
     * 返回日期
     * @param date yyyy-MM-dd
     * @return Date yyyyMMdd
     * @throws ParseException
     */
    public static Date parseDate(String date) throws ParseException {
        SimpleDateFormat dateF = new SimpleDateFormat("yyyy-MM-dd");
        return dateF.parse(date);
    }

    /**
     * 返回时间
     * @param date 12:12:12
     * @return Date
     * @throws ParseException
     */
    public static Date parseTime(String time) throws ParseException {
        SimpleDateFormat dateF = new SimpleDateFormat("HH:mm:ss");
        return dateF.parse(time);
    }

    /**
     * 返回日期
     * @param date
     * @return Date yyyyMMdd
     * @throws ParseException
     */
    public static Date parseDate(int date) throws ParseException {
        SimpleDateFormat dateF = new SimpleDateFormat("yyyyMMdd");
        return dateF.parse(String.valueOf(date));
    }
    /**
     * 返回日期的月末时间
     * @param date
     * @return Date
     */
    public static Date getMonthEnd(Date date) {
        GregorianCalendar cal = new GregorianCalendar();
        cal.setTime(date);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(GregorianCalendar.DAY_OF_MONTH));
        return cal.getTime();
    }

    public static boolean isZero(int date) {
        return date==0||date==19000101||date==19700101||parse(date).getTime() <= parse(19010101).getTime()||parse(date).getTime() <= parse(19700101).getTime();

    }
    /**
     * 返回两个日期相差年数
     * @param start
     * @param end
     * @return 相差年数
     * @throws ParseException
     */
    public static int yearsOf(int start, int end)throws BusinessException{
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(parse(start));
        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(parse(end));
        return cal2.get(Calendar.YEAR) - cal1.get(Calendar.YEAR) + 1;
    }

    /**
     * +表达式,d,w,m,y
     * @param date
     * @param exp
     * @return String类型的日期
     * @throws ParseException
     */
    public static int add(int date, String exp) throws BusinessException {
        return  add(date, exp, 1, false);
    }

    /**
     * 比较两个时间大小
     * @param date1
     * @param date2
     * @return true date1>=date2; false date1 < date2
     * @throws ParseException
     */
    public static boolean greatEqual(int date1, int date2)  {
        return date1 >= date2;
    }
    /**
     *
     * @param date1
     * @param date2
     * @return date1  >  date2;
     */
    public static boolean great(int date1, int date2) {
        return  date1  >  date2;
    }
    /**
     * 日期是否一致
     * @param date1
     * @param date2
     * @return
     */
    public static boolean equal(int date1,int date2){
        return  date1  ==  date2;
    }

    /**
     * 比较两个时间大小(无日期)
     * @param date1
     * @param date2
     * @return true date1>=date2; false date1 < date2
     * @throws ParseException
     */
    public static boolean greatTime(int date1, int date2)  {
        return  date1 >= date2;
    }
    /**
     * 比较两个时间大小
     * @param date1
     * @param date2
     * @return
     * true : date1 < date2; false : date1 >= date2
     * @throws ParseException
     */
    public static boolean less(int date1, int date2) {
        return  date1  <  date2 ;
    }

    /**
     * 比较表达式的大小
     * @param exp1
     * @param exp2
     * @return 表达式(折算成天)相减后的值
     */
    public static int compare(String exp1, String exp2){
        return getDays(exp1) - getDays(exp2);
    }

    public static int getDays(String exp) {
        int days = 0;
        try {
            int len = exp.length();
            if("ON".equals(exp)){
                days = 0;
            }else if("TN".equals(exp)){
                days = 1;
            }else if("SP".equals(exp)){
                days = 2;
            }else if("SN".equals(exp)){
                days = 3;
            }else{
                int num = Integer.parseInt(exp.substring(0, len - 1));
                char c = exp.charAt(len - 1);
                if( c == ‘d‘ || c == ‘D‘){
                    days = num;
                } else if( c == ‘w‘ || c == ‘W‘){
                    days = num * 7;
                }else if( c == ‘m‘ || c == ‘M‘){
                    days = num * 30;
                }else if( c == ‘y‘ || c == ‘Y‘){
                    days = num * 365;
                }
            }
        } catch (Exception e) {
            throw new BusinessException("error.ParamTerm.paramTerm",
                    exp);
        }
        return days;
    }
    /**
     * 返回年
     * @param date
     * @return 年
     * @throws ParseException
     */
    public static int getYear(int date){
        int year=1900;
        try {
            year= getYear(parseDate(date));
        } catch (ParseException e) {
            year=getYear(parse(date));
        }
        return year;
    }
    /**
     * 返回年
     * @param date
     * @return 年
     * @throws ParseException
     */
    public static int getYear(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.YEAR);
    }
    /**
     * 返回月
     * @param date
     * @return 月
     * @throws ParseException
     */
    public static int getMonth(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal.get(Calendar.MONTH)+1;
    }
 /**
  * 返回日期的年月
  * @param date
  * @return
  */
    public static int getYearMonth(int date){
        int yearMonth=190001;
        try {
            Date date1=parseDate(date);
             SimpleDateFormat sdf=new SimpleDateFormat("yyyyMM");
             yearMonth=Integer.valueOf( sdf.format(date1));
        } catch (ParseException e) {
            yearMonth=date/100;
        }
        return yearMonth;
    }

    /**
     * 获取日期week信息
     * @param date
     * @return
     */
    public static int getDayWeek(int date){
        Calendar cal=getCalendarByInt(date);
        return    cal.get(Calendar.DAY_OF_WEEK);

    }

    /**
     * 读取当前的日期+时间
     * return long 20100421132630
     */
    public static long getNumericDateTimeMill(){
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("yyyyMMddHHmmssSSS");
        String dateTime = sf.format(Calendar.getInstance().getTime());
        return Long.parseLong(dateTime);
    }
    public static long getNumericDateTime(int date,int time){
        String dateString=date+"000000";
        long datetime=Long.parseLong(dateString);
        return datetime+time;
    }
    
    /**
     * 获取 yyyyMMdd-HH:mm:ss.SSS 类型
     * @param dateTime
     * @return String 20150706-11:08:21.251
     */
    public static String getNumericDateTimeStr(){
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("yyyyMMdd-HH:mm:ss.SSS");
        String dateTime = sf.format(Calendar.getInstance().getTime());
        return dateTime;
    }
    /**
     * yyyyMMdd-HH:mm:ss.SSS 转换为 long 类型
     * @param dateTime
     * @return long 20100421132630333
     */
    public static long getNumericDateTime(String  dateTimeStr){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd-HH:mm:ss.SSS");
        Date date = null;
        try {
            date = sdf.parse(dateTimeStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        SimpleDateFormat sf = (SimpleDateFormat)DateFormat.getInstance();
        sf.applyPattern("yyyyMMddHHmmssSSS");
        return Long.parseLong(sf.format(date));
    }
}

 

以上是关于DateUtil的主要内容,如果未能解决你的问题,请参考以下文章

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

java Dateutil 操作类

使用“import dateutil”和“dateutil.parser.parse()”时出现AttributeError,但使用“from dateutil import parser”时没有问题

3hutool源码分析:DateUtil(时间工具类)-获取日期的各种内容

使用 Python dateutil,如何判断时区字符串是不是“有效”?

常用工具类系列之DateUtil