DateUtils 工具类方法汇总

Posted 王六六的IT日常

tags:

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

最近看项目代码,总是能看到这个工具类中的方法,总结一下

package com.huitian.eco.repair.utils;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
/**
 * @author CDN
 * @desc  公共日期工具类
 */
public class DateUtils 
 
    public static String DATE_FORMAT = "yyyy-MM-dd";
 
    public static String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
 
    public static String DATE_FORMAT_CHINESE = "yyyy年M月d日";
 
    /**
     * 获取当前日期
     *
     * @return
     */
    public static String getCurrentDate() 
        String datestr = null;
        SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_FORMAT);
        datestr = df.format(new Date());
        return datestr;
    
 
    /**
     * 获取当前日期时间
     *
     * @return
     */
    public static String getCurrentDateTime() 
        String datestr = null;
        SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_TIME_FORMAT);
        datestr = df.format(new Date());
        return datestr;
    
 
    /**
     * 获取当前日期时间
     *
     * @return
     */
    public static String getCurrentDateTime(String Dateformat) 
        String datestr = null;
        SimpleDateFormat df = new SimpleDateFormat(Dateformat);
        datestr = df.format(new Date());
        return datestr;
    
 
    public static String dateToDateTime(Date date) 
        String datestr = null;
        SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_TIME_FORMAT);
        datestr = df.format(date);
        return datestr;
    
 
    /**
     * 将字符串日期转换为日期格式
     *
     * @param datestr
     * @return
     */
    public static Date stringToDate(String datestr) 
 
        if (datestr == null || "".equals(datestr)) 
            return null;
        
        Date date = new Date();
        SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_FORMAT);
        try 
            date = df.parse(datestr);
         catch (ParseException e) 
            date = DateUtils.stringToDate(datestr, "yyyyMMdd");
        
        return date;
    
 
    /**
     * 将字符串日期转换为日期格式
     * 自定義格式
     *
     * @param datestr
     * @return
     */
    public static Date stringToDate(String datestr, String dateformat) 
        Date date = new Date();
        SimpleDateFormat df = new SimpleDateFormat(dateformat);
        try 
            date = df.parse(datestr);
         catch (ParseException e) 
            e.printStackTrace();
        
        return date;
    
 
 
    /**
     * 将日期格式日期转换为字符串格式
     *
     * @param date
     * @return
     */
    public static String dateToString(Date date) 
        String datestr = null;
        SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_FORMAT);
        datestr = df.format(date);
        return datestr;
    
 
    /**
     * 将日期格式日期转换为字符串格式 自定義格式
     *
     * @param date
     * @param dateformat
     * @return
     */
    public static String dateToString(Date date, String dateformat) 
        String datestr = null;
        SimpleDateFormat df = new SimpleDateFormat(dateformat);
        datestr = df.format(date);
        return datestr;
    
 
    /**
     * 获取日期的DAY值
     *
     * @param date 输入日期
     * @return
     */
    public static int getDayOfDate(Date date) 
        int d = 0;
        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        d = cd.get(Calendar.DAY_OF_MONTH);
        return d;
    
 
    /**
     * 获取日期的MONTH值
     *
     * @param date 输入日期
     * @return
     */
    public static int getMonthOfDate(Date date) 
        int m = 0;
        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        m = cd.get(Calendar.MONTH) + 1;
        return m;
    
 
    /**
     * 获取日期的YEAR值
     *
     * @param date 输入日期
     * @return
     */
    public static int getYearOfDate(Date date) 
        int y = 0;
        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        y = cd.get(Calendar.YEAR);
        return y;
    
 
    /**
     * 获取星期几
     *
     * @param date 输入日期
     * @return
     */
    public static int getWeekOfDate(Date date) 
        int wd = 0;
        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        wd = cd.get(Calendar.DAY_OF_WEEK) - 1;
        return wd;
    
 
    /**
     * 获取输入日期的当月第一天
     *
     * @param date 输入日期
     * @return
     */
    public static Date getFirstDayOfMonth(Date date) 
        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        cd.set(Calendar.DAY_OF_MONTH, 1);
        return cd.getTime();
    
 
    /**
     * 获得输入日期的当月最后一天
     *
     * @param date
     */
    public static Date getLastDayOfMonth(Date date) 
        return DateUtils.addDay(DateUtils.getFirstDayOfMonth(DateUtils.addMonth(date, 1)), -1);
    
 
    /**
     * 判断是否是闰年
     *
     * @param date 输入日期
     * @return 是true 否false
     */
    public static boolean isLeapYEAR(Date date) 
 
        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
        int year = cd.get(Calendar.YEAR);
 
        if (year % 4 == 0 && year % 100 != 0 | year % 400 == 0) 
            return true;
         else 
            return false;
        
    
 
    /**
     * 根据整型数表示的年月日,生成日期类型格式
     *
     * @param year  年
     * @param month 月
     * @param day   日
     * @return
     */
    public static Date getDateByYMD(int year, int month, int day) 
        Calendar cd = Calendar.getInstance();
        cd.set(year, month - 1, day);
        return cd.getTime();
    
 
    /**
     * 获取年周期对应日
     *
     * @param date  输入日期
     * @param iyear 年数  負數表示之前
     * @return
     */
    public static Date getYearCycleOfDate(Date date, int iyear) 
        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
 
        cd.add(Calendar.YEAR, iyear);
 
        return cd.getTime();
    
 
    /**
     * 获取月周期对应日
     *
     * @param date 输入日期
     * @param i
     * @return
     */
    public static Date getMonthCycleOfDate(Date date, int i) 
        Calendar cd = Calendar.getInstance();
        cd.setTime(date);
 
        cd.add(Calendar.MONTH, i);
 
        return cd.getTime();
    
 
    /**
     * 计算 fromDate 到 toDate 相差多少年
     *
     * @param fromDate
     * @param toDate
     * @return 年数
     */
    public static int getYearByMinusDate(Date fromDate, Date toDate) 
        Calendar df = Calendar.getInstance();
        df.setTime(fromDate);
 
        Calendar dt = Calendar.getInstance();
        dt.setTime(toDate);
 
        return dt.get(Calendar.YEAR) - df.get(Calendar.YEAR);
    
 
    /**
     * 计算 fromDate 到 toDate 相差多少个月
     *
     * @param fromDate
     * @param toDate
     * @return 月数
     */
    public static int getMonthByMinusDate(Date fromDate, Date toDate) 
        Calendar df = Calendar.getInstance();
        df.setTime(fromDate);
 
        Calendar dt = Calendar.getInstance();
        dt.setTime(toDate);
 
        return dt.get(Calendar.YEAR) * 12 + dt.get(Calendar.MONTH) -
                (df.get(Calendar.YEAR) * 12 + df.get(Calendar.MONTH));
    
 
    /**
     * 计算 fromDate 到 toDate 相差多少天
     *
     * @param fromDate
     * @param toDate
     * @return 天数
     */
    public static long getDayByMinusDate(Object fromDate, Object toDate) 
 
        Date f = DateUtils.chgObject(fromDate);
 
        Date t = DateUtils.chgObject(toDate);
 
        long fd = f.getTime();
        long td = t.getTime();
 
        return (td - fd) / (24L * 60L * 60L * 1000L);
    
 
    /**
     * 计算年龄
     *
     * @param birthday 生日日期
     * @param calcDate 要计算的日期点
     * @return
     */
    public static int calcAge(Date birthday, Date calcDate) 
 
        int cYear = DateUtils.getYearOfDate(calcDate);
        int cMonth = DateUtils.getMonthOfDate(calcDate);
        int cDay = DateUtils.getDayOfDate(calcDate);
        int bYear = DateUtils.getYearOfDate(birthday);
        int bMonth = DateUtils.getMonthOfDate(birthday);
        int bDay = DateUtils.getDayOfDate(birthday);
 
        if (cMonth > bMonth || (cMonth == bMonth && cDay > bDay)) 
            return cYear - bYear;
         else 
            return cYear - 1 - bYear;
        
    
 
    /**
     * 从身份证中获取出生日期
     *
     * @param idno 身份证号码
     * @return
     */
    public static String getBirthDayFromIDCard(String idno) 
        Calendar cd = Calendar.getInstance();
        if (idno.length() == 15) 
            cd.set(Calendar.YEAR, Integer.parseInt("19" + idno.substring(6, 8)));
            cd.set(Calendar.MONTH, Integer.parseInt(idno.substring(8, 10)) - 1);
            cd.set(Calendar.DAY_OF_MONTH, Integer.parseInt(idno.substring(10, 12)));
         else if (idno.length() == 18) 
            cd.set(Calendar.YEAR, Integer.parseInt(idno.substring(6, 10)));
            cd.set(Calendar.MONTH, Integer.parseInt(idno.substring(10, 12)) - 1);
            cd.set(Calendar.DAY_OF_MONTH, Integer.parseInt(idno.substring(12, 14)));
        
        return DateUtils.dateToString(cd.getTime());
    
 
    /**
     * 在输入日期上增加(+)或减去(-)天数
     *
     * @param date 输入日期
     * @param iday 要增加或减少的天数
     */
    public static Date addDay(Date date, int iday) 
        Calendar cd = Calendar.getInstance();
 
        cd.setTime(date);
 
        cd.add(Calendar.DAY_OF_MONTH, iday);
 
        return cd.getTime();
    
 
    /**
     * 在输入日期上增加(+)或减去(-)月份
     *
     * @param date   输入日期
     * @param imonth 要增加或减少的月分数
     */
    public static Date addMonth(Date date, int imonth) 
        Calendar cd = Calendar.getInstance();
 
        cd.setTime(date);
 
        cd.add(Calendar.MONTH, imonth);
 
        return cd.getTime();
    
 
    /**
     * 在输入日期上增加(+)或减去(-)年份
     *
     * @param date  输入日期
     * @param iyear 要增加或减少的年数
     */
    public static Date addYear(Date date, int iyear) 
        Calendar cd = Calendar.getInstance();
 
        cd.setTime(date);
 
        cd.add(Calendar.YEAR, iyear);
 
        return cd.getTime();
    
 
    /**
     * 將OBJECT類型轉換為Date
     *
     * @param date
     * @return
     */
    public static Date chgObject(Object date) 
 
        if (date instanceof Date) 
            return (Date) date;
        
 
        if (date instanceof String) 
            return DateUtils.stringToDate((String) date);
        
 
        return null;
 
    

/**
 * 时间工具类
 *
 * @author wangchao
 */
public class DateUtils extends org.apache.commons.lang3.time.DateUtils 
    private final static Logger logger = LoggerFactory.getLogger(DateUtils.class);
    public static String YYYY = "yyyy";
 
    public static String YYYY_MM = "yyyy-MM"DateUtils   时间工具类

日期工具类 DateUtils(继承org.apache.commons.lang.time.DateUtils类)

Java工具类DateUtils实例详解

DateUtils工具类

DateUtils工具类

DateUtils 工具类