各种日期类型转换

public class DateUtil {
    /**
     * 默认日期格式
     */
    public static final String DEFAULT_DATE_PATTERN = "yyyyMMdd";

    public static final String DATE_PATTERN_1 = "yyyyMMddHHmmssSSS";
    public static final String MAIL_DATE_DT_PART_FORMAT = "yyyyMMdd";
    public static final String SHORT_DATE_FORMAT = "yyyy-MM-dd";
    public static final String SHORT_DATE_GBK_FORMAT = "yyyy年MM月dd日";
    public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm";
    public static final String DATE_GBK_FORMAT = "yyyy年MM月dd日 HH时mm分";      
    public static final String LONG_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String LONG_DATE_GBK_FORMAT = "yyyy年MM月dd日 HH时mm分ss秒"; 
    public static final String MAIL_DATE_FORMAT = "yyyyMMddHHmmss";
    public static final String MAIL_DATE_HHMM_FORMAT = "HH:mm";
    public static final String FULL_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss:SSS";
    public static final String FULL_DATE_GBK_FORMAT = "yyyy年MM月dd日 HH时mm分ss秒SSS毫秒";
    public static final String FULL_DATE_COMPACT_FORMAT = "yyyyMMddHHmmssSSS";
    public static final String LDAP_DATE_FORMAT = "yyyyMMddHHmm'Z'";
    public static final String US_LOCALE_DATE_FORMAT = "EEE MMM dd HH:mm:ss zzz yyyy";
    public static final String MAIL_DATE_HOUR_DT_PART_FORMAT = "yyyyMMddHH";
    public static final String MAIL_TIME_TM_PART_FORMAT = "HHmmss"; 
    public static final String LONG_DATE_TM_PART_FORMAT = "HH:mm:ss";
    public static final String Long_DATE_TM_PART_GBK_FORMAT = "HH时mm分ss秒";
    public static final String MAIL_DATA_DTM_PART_FORMAT="MM月dd日HH:mm";
    public static final String POINT_DATA_DTM_PART_FORMAT="yyyy.MM.dd";
    public static long NANO_ONE_SECOND = 1000;
    public static long NANO_ONE_MINUTE = 60*NANO_ONE_SECOND;
    public static long NANO_ONE_HOUR = 60*NANO_ONE_MINUTE;
    public static long NANO_ONE_DAY = 24*NANO_ONE_HOUR;

    /**
     * 返回日期字符串
     *
     * @param date
     * @param format
     * @return
     */
    public static String date2String(Date date, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format == null ? DEFAULT_DATE_PATTERN : format);
        return sdf.format(date);
    }
   
    /**
     * 获取当前日期 ,格式类型yyyyMMdd
     */
    public static String getCurrentDate(){
        return toMailDateDtPartString(getNow());       
    }
   
    /**
     * 将一个日期型转换为'yyyyMMdd'格式字串
     * @param aDate
     * @return
     */
    public static final String toMailDateDtPartString(Date aDate) {
        return toFormatDateString(aDate,MAIL_DATE_DT_PART_FORMAT);
    }
   
    /**
     * 将一个日期型转换为指定格式字串
     * @param aDate
     * @param formatStr
     * @return
     */
    public static final String toFormatDateString(Date aDate, String formatStr) {
        if (aDate == null) return StringUtils.EMPTY;
        return new SimpleDateFormat(formatStr).format(aDate);

    }
   
    /**
     * 获取当前日期类型时间
     */
    public static Date getNow(){
        return new Date();
    }

    /**
     * 返回前一天
     *
     * @param date
     * @return
     */
    public static Date getLastDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, -1);
        date = calendar.getTime();
        return date;
    }

    /**
     * 字符串转换成Date
     *
     * @param date
     * @param format
     * @return
     */
    public static Date string2Date(String date, String format) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(format == null ? DEFAULT_DATE_PATTERN : format);
        return sdf.parse(date);
    }

    /**
     * 日期加一天
     *
     * @param date String格式
     * @return String格式的时间
     */
    public static String getNextDay(String date) {
        Calendar cal = Calendar.getInstance();
        try {
            cal.setTime(string2Date(date, DEFAULT_DATE_PATTERN));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        cal.add(Calendar.DATE, 1);  //加1天
        Date nextDay = cal.getTime();
        return date2String(nextDay, DEFAULT_DATE_PATTERN);
    }
   
    /**
     * 返回前几天
     *
     * @param date
     * @return
     */
    public static Date getLastDays(Date date,int m) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH, m);
        date = calendar.getTime();
        return date;
    }

   
    /**
     * 获取当前日期和时间,格式yyyyMMddHHmmss
     * @return
     */
    public static String getCurrentDateTime(){
        return toMailDateString(getNow());
    }
   
    /**
     * 将一个日期型转换为'yyyyMMddHHmmss'格式字串
     * @param aDate
     * @return
     */
    public static final String toMailDateString(Date aDate) {
        return toFormatDateString(aDate,MAIL_DATE_FORMAT);
    }
   
   
    /**
     * 计算两个日期之间相差的天数
     * @param startDateStr yyyymmdd
     * @param endDateStr yyyymmdd
     * @return
     */
    public static final int getDifferenceDays2(String startDateStr,String endDateStr){
        return new Long(getDifferenceMillis(startDateStr,endDateStr,MAIL_DATE_DT_PART_FORMAT)/(NANO_ONE_DAY)).intValue();
    }
    public static final long getDifferenceMillis(String startDateStr, String endDateStr, String dateFormat){
        try {
            return getDifferenceMillis(parser(startDateStr,dateFormat),parser(endDateStr,dateFormat));
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }
   
    public static final Date parser(String aDateStr, String formatter) throws ParseException{
        if (StringUtils.isBlank(aDateStr)) return null;
        SimpleDateFormat sdf = new SimpleDateFormat(formatter);
        return sdf.parse(aDateStr);

    }
   
    public static final long getDifferenceMillis(String startDateStr, String endDateStr){
        return getDifferenceMillis(startDateStr,endDateStr,SHORT_DATE_FORMAT);
    }
   
    public static final long getDifferenceMillis(Date startDate, Date endDate){
        return Math.abs(endDate.getTime()-startDate.getTime());
    }
   
    /**
     * 为一个日期加上指定天数
     * @param aDate yyyyMMdd格式字串
     * @param amount 天数
     * @return
     */
    public static final String addDays(String aDate, int amount) {
        try {
            return DateUtil.toMailDateDtPartString(addTime(DateUtil.parseMailDateDtPartString(aDate),Calendar.DAY_OF_YEAR,amount)); 
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }
   
    /**
     * 将一个符合'yyyyMMdd'格式的字串解析成日期型
     * @param aDateStr
     * @return
     */
    public static final Date parseMailDateDtPartString(String aDateStr) throws ParseException{
        return parser(aDateStr,MAIL_DATE_DT_PART_FORMAT);
    }
   
    private static final Date addTime(Date aDate,int timeType,int amount){
        if (aDate == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance();     
        cal.setTime(aDate);
        cal.add(timeType, amount);
        return cal.getTime();

    }


    public static final Date aa(){

        String datetime = "20180523160200";
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");  
         LocalDateTime ldt = LocalDateTime.parse(datetime,dtf);  
         System.out.println(ldt);  
   
   
         DateTimeFormatter fa = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");  
         String datetime2 = ldt.format(fa);  
         System.out.println(datetime2);    

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值