JAVA工具类时间处理类DateUtils

废话不说,直接上码:

package util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 时间转换工具类。
 * 
 * @author WKF
 * @version 2014-11-11
 */
public class DateUtils {

    /** pattern: yyyy-MM-dd HH:mm:ss */
    public static final String PATTERN_1 = "yyyy-MM-dd HH:mm:ss";

    /** pattern: yyyy-MM-dd */
    public static final String PATTERN_2 = "yyyy-MM-dd";

    /** pattern: yyyy/MM/dd HH:mm:ss */
    public static final String PATTERN_3 = "yyyy/MM/dd HH:mm:ss";

    /** pattern: yyyy/MM/dd */
    public static final String PATTERN_4 = "yyyy/MM/dd";
    
    /** pattern: yyyyMMddHHmmss */
    public static final String PATTERN_5 = "yyyyMMddHHmmss";
    
    /** pattern: yyyyMMddHHmmss */
    public static final String PATTERN_6 = "yyyy-MM-dd-HH-mm";
    
    public static final String PATTERN_7 = "yyyy-MM";

    private static Map<String, DateFormat> context = new ConcurrentHashMap<String, DateFormat>();

    /**
     * 创建DateFormat对象。
     * 
     * @param pattern 时间模式
     * @param locale 区域语言
     * @return DateFormat
     */
    public static DateFormat getDateFormat(String pattern, Locale locale) {
        DateFormat format = null;
        if (context.containsKey(pattern)) {
            format = context.get(pattern);
        } else {
            format = new SimpleDateFormat(pattern, locale);
            context.put(pattern, format);
        }
        return format;
    }
    /**
     * 多少天后的时间
     * 
     * @param day 多少天后
     * @param d 原始时间
     * @return date 变后时间
     */
    public static Date afterTime(int day,Date d){
        
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(d);
        calendar.setTimeInMillis(Calendar.getInstance().getTimeInMillis()+day*3600*24*1000);
        Date date = calendar.getTime();
        return date;
    }
    
    /**
     * 多少天之前的时间
     * 
     * @param day 多少天之前
     * @param calendar 原始时间
     * @return date 变后时间
     */
    public static Date beforeTime(int day,Calendar calendar){
        calendar = Calendar.getInstance();
        calendar.setTimeInMillis(Calendar.getInstance().getTimeInMillis()-day*3600*24*1000);
        Date date = calendar.getTime();
        return date;
    }
    /**
     * 格式化时间字符串为指定格式字符串。
     * 
     * @param srcPattern 原时间模式
     * @param desPattern 目标时间模式
     * @param srcDate 原时间
     * @return 格式化时间字符串
     * @throws ParseException 解析异常
     */
    public static String format(String srcPattern, String desPattern, String srcDate)
            throws ParseException {
        String ret = null;
        DateFormat format = getDateFormat(srcPattern, Locale.getDefault());
        Date date = format.parse(srcDate);
        ret = getDateFormat(desPattern, Locale.getDefault()).format(date);
        return ret;
    }

    /**
     * 格式化时间。
     * 
     * @param desPattern 指定时间模式
     * @param date 时间
     * @return 格式化时间
     */
    public static String format(String desPattern, Date date) {
        DateFormat format = getDateFormat(desPattern, Locale.getDefault());
        return format.format(date);
    }
    
    /**
     * 返回当前年份。
     * 
     * @return year
     */
    public static int getThisYear() {
        return Calendar.getInstance().get(Calendar.YEAR);
    }
    
    /**
     * 格式化时间。
     * 
     * @param 
     * @param date 时间
     * @return 格式化时间  yyyy-MM-dd HH:mm:ss
     * @throws ParseException 
     */
    public static String format1(Date date) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_1);
        if(null!=date){
            return sdf.format(date);
        }
        return "";
    }
    
    /**
     * 格式化时间。
     * 
     * @param 
     * @param date 时间
     * @return 格式化时间  yyyy-MM-dd
     * @throws ParseException 
     */
    public static String format2(Date date) {
        String res = "";
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_2);
            if(null!=date){
                res = sdf.format(date);
            }
        }catch (Exception e){
        }
        return res;
    }
    
    /**
     * 格式化时间。
     * 
     * @param 
     * @param date 时间
     * @return 格式化时间  yyyy/MM/dd HH:mm:ss
     * @throws ParseException 
     */
    public static String format3(Date date) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_3);
        if(null!=date){
            return sdf.format(date);
        }
        return "";
    }
    
    /**
     * 格式化时间。
     * 
     * @param 
     * @param date 时间
     * @return 格式化时间  yyyy/MM/dd
     * @throws ParseException 
     */
    public static String format4(Date date) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_4);
        if(null!=date){
            return sdf.format(date);
        }
        return "";
    }
    
    /**
     * 格式化时间。
     * 
     * @param 
     * @param date 时间
     * @return 格式化时间 yyyyMMddHHmmss
     * @throws ParseException 
     */
    public static String format5(Date date){
        SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_5);
        if(null!=date){
            return sdf.format(date);
        }
        return "";
    }
    /**
     * 格式化时间。
     * 
     * @param 
     * @param date 时间
     * @return 格式化时间 yyyy-MM-dd HH:mm
     * @throws ParseException 
     */
    public static String format6(Date date) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_6);
        if(null!=date){
            return sdf.format(date);
        }
        return "";
    }
    
    /**
     * 格式化时间。
     * 
     * @param 
     * @param date 时间
     * @return 格式化时间 yyyy-MM
     * @throws ParseException 
     */
    public static String format7(Date date) throws ParseException{
        SimpleDateFormat sdf = new SimpleDateFormat(PATTERN_7);
        if(null!=date){
            return sdf.format(date);
        }
        return "";
    }
    
    /**
     * String转Date
     * @param date
     * @return
     * @throws ParseException
     */
    public static Date stringToDate(String date){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM");
        Date d = null;
        try {
            d = sdf.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
            d = new Date();
        }
        return d;
    }
    
    /**
     * String转Date
     * @param strDate 日期str
     * @param pattern  格式str
     * @return
     * @throws ParseException
     */
    public static Date string2Date(String strDate, String pattern) {
        if (strDate == null || strDate.equals("")) {
            throw new RuntimeException("str date null");
        }
        if (pattern == null || pattern.equals("")) {
            pattern = DateUtils.PATTERN_2;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        Date date = null;

        try {
            date = sdf.parse(strDate);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        return date;
    }
    
    /**
     * 获取时间差
     * @param begin
     * @param end
     * @return
     */
    public static long diffTime(Date begin, Date end){
        long between = (end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒
        return between;
    }
    
    /**
     * 获取下一个月
     * @param datestr 日期str(yyyy-MM格式)
     * @return String
     */
    public static String nextMonth(String datestr){
         Date date = string2Date(datestr,PATTERN_7);
         SimpleDateFormat sf  =new SimpleDateFormat(PATTERN_7);
         GregorianCalendar gc =new GregorianCalendar();
         gc.setTime(date);
         gc.add(Calendar.MONTH, +1);
         gc.set(gc.get(Calendar.YEAR),gc.get(Calendar.MONTH),gc.get(Calendar.DATE));
         return sf.format(gc.getTime());
    }
    
    /**
     * 获取下一个月
     * @param date 日期Date
     * @return Date
     */
    public static Date nextMonth(Date date){
        GregorianCalendar gc =new GregorianCalendar();
        gc.setTime(date);
        gc.add(Calendar.MONTH, +1);
        gc.set(gc.get(Calendar.YEAR),gc.get(Calendar.MONTH),gc.get(Calendar.DATE));
        return gc.getTime();
    }

    /**
     * 格式化是日期
     * @param date
     * @return
     */
    public static String formatDate(Date date){
        if(date == null) {
            return "";
        } else {
            return new SimpleDateFormat("yyyy-MM-dd").format(date);
        }
    }

    /**
     * 格式化是时间
     * @param date
     * @return
     */
    public static String formatTime(Date date){
        if(date == null) {
            return "";
        } else {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
        }
    }

    public static void main(String[] args) throws ParseException {
        System.out.println(nextMonth("2014-12"));
        System.out.println(format6(new Date(545322156)));
    }
    
    static boolean error=true;
    /**
     * unix时间戳转换为dateFormat
     * 
     * @param beginDate
     * @return
     */
    public static String timestampToDate(String beginDate) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String sd = sdf.format(new Date(Long.parseLong(beginDate)));
        return sd;
    }

    /**
     * 自定义格式时间戳转换
     * 
     * @param beginDate
     * @return
     */
    public static String timestampToDate(String beginDate,String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String sd="";
        if(beginDate.length()==10){
            sd = sdf.format(new Date(Long.parseLong(beginDate+"000")));
        }else{
            sd = sdf.format(new Date(Long.parseLong(beginDate)));
        }
        return sd;
    }

    /**
     * 将字符串转为时间戳
     * 
     * @param user_time
     * @return
     */
    public static String dateToTimestamp(String date) {
        return dateToTimestamp(date, "yyyy-MM-dd HH:mm");
    }
    
    public static String dateToTimestamp(String date,String format) {
        String re_time = null;
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date d;
        try {
            d = sdf.parse(date);
            long l = d.getTime();
            String str = String.valueOf(l);
            re_time = str.substring(0, 10);
        } catch (ParseException e) {
            if(error){
                System.out.println("时间格式转换错误,看看是不是格式不对");
                System.out.println(e.getMessage());
            }
        }
        return re_time;
    }
    
}
有帮助的请关注或者评论

猜你喜欢

转载自blog.csdn.net/qq_37284798/article/details/86438901