日期工具类

package com.kpzc.utils;

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

/**
 * @author:鲲鹏展翅
 * @description: 操作时间的工具类
 */
public class DateTools {
    
    public static final String JAVA_DEFAULT_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String JAVA_YMDHMS_FORMAT = "yyyyMMddHHmmss";
    public static final String JAVA_Y_M_D_FORMAT = "yyyy-MM-dd";
    public static final String JAVA_YMD_FORMAT = "yyyyMMdd";
    public static final String SQL_DEFAULT_FORMAT = "YYYY-MM-DD HH24:MI:SS";
    public static final String SQL_YMDHMS_FORMAT = "YYYYMMDDHH24MISS";
    public static final String SQL_Y_M_D_FORMAT = "YYYY-MM-DD";
    public static final String SQL_YMD_FORMAT = "YYYYMMDD";
    
    /**
     * @return 获取Calendar
     */
    public static Calendar getCalendar(){
        return  Calendar.getInstance();
    }
    
    /**
     * 获取SimpleDateFormat
     * @param format
     * @return
     */
    public static SimpleDateFormat getSDF(String pattern){
        return new SimpleDateFormat(pattern);
    }
    
    /**
     * 获取DateFormat
     * @param format
     * @return
     */
    public static DateFormat getDF(String pattern){
        return getSDF(pattern);
    }
    
    /**
     * 获取yyyy-MM-dd HH:mm:ss格式的当前日期
     * @return
     */
    public static String getCurrDateTime(){
        return getStringDate(new Date());
    }
    
    public static String getStringDate(Date date){
        if(date == null)
            return null;
        return getStringDate(date,JAVA_DEFAULT_FORMAT);
    }
    

    public static String getStringDate(Date date,String pattern){
        if(date == null || "null".equals(pattern)|| null == pattern || ""==pattern || "NULL".equals(pattern)){
            return null;
        }
        return getSDF(pattern).format(date);
    }
    
    /**
     * 获取当前时间的时间戳
     * @return
     */
    public static long getCurrTimetemp(){
        return System.currentTimeMillis();
    }
    
    /**
     * 日期转时间戳
     * @param dateStr
     * @return
     */
    public static long getCurrTimetemp(Date dateStr){
        return getTimetemp(dateStr);
    }
    
    public static long getTimetemp(Date date){
        if(date == null)
            return 0;
        return date.getTime();
    }
    
    /**
     * 判断是不是pattern格式的日期
     * @param strDate
     * @param pattern
     * @return true 正确 false 不正确
     */
    public static boolean isValidDate(String strDate, String pattern) {
        if (strDate == null)
            return false;
        try {
            getSDF(pattern).parse(strDate);
            return true;
        } catch (Exception e) {
            // 格式不对
            return false;
        }
    }

    /**
     *  时间戳转换成时间
     * @param timeStamp
     * @param pattern
     * @return
     */
    public static String timeStampToDate(Long timeStamp,String pattern){
        return getSDF(pattern).format(timeStamp);
    }

    /**
     * date转string
     * @param date
     * @param type
     * @return
     */
    public static String dateToString(Date date, String type) {
        String str = null;  
        DateFormat format = getDF("yyyy-MM-dd");  
        if (type.equals("SHORT")) {  
            // 07-1-18  
            format = DateFormat.getDateInstance(DateFormat.SHORT);  
            str = format.format(date);  
        } else if (type.equals("MEDIUM")) {  
            // 2007-1-18  
            format = DateFormat.getDateInstance(DateFormat.MEDIUM);  
            str = format.format(date);  
        } else if (type.equals("FULL")) {  
            // 2007年1月18日 星期四  
            format = DateFormat.getDateInstance(DateFormat.FULL);  
            str = format.format(date);  
        }else if (type.equals("LONG")) {  
            // Date转化成  2017年11月1日
            format = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINESE);
            str = format.format(date);  
        }    
        return str;  
    }  

    /**
     * string类型的时间转为日期格式
     * Date是日期对象,并不是字符串。 当你打印Date对象时,java虚拟机默认调用了此对象的toString()方法。
     * 此方法输出的国际标准日期格式。并不是说Date对象是这个格式。
     * Date对象在保存日期时使用的是一个长整数。不存在哪种格式,只有输出到字符串时才有所谓的格式!
     * @param string string类型的时间
     * @param pattern  时间格式
     * @return
     * @throws ParseException
     */
    public static Date stringToDate(String string, String pattern){  
        Date date = null;
        try {
            date = getSDF(pattern).parse(string);
        } catch (ParseException e) {
            e.printStackTrace();
        }  
        return date;  
    }
    
    /**
     * @return 获取当前年
     */
    public static int getYear(){
        return getCalendar().get(Calendar.YEAR);
    }
    
    /**
     * @return 获取当前月
     */
    public static int getMonth(){
        return getCalendar().get(Calendar.MONTH)+1;
    }
    
    /**
     * @return 获取当前日
     */
    public static int getDay(){
        return getCalendar().get(Calendar.DATE);
    }
    
    public static void main(String[] args) {
        String str = "2018-12-24";  
        System.out.println(isValidDate(str, JAVA_Y_M_D_FORMAT));
        System.out.println(getCurrDateTime());//获取yyyy-MM-dd HH:mm:ss格式的当前日期
        System.out.println(getCurrTimetemp());//获取当前时间的时间戳
        String sd =timeStampToDate(getCurrTimetemp(),JAVA_DEFAULT_FORMAT);//当前时间的时间戳转换成时间
        System.out.println("格式化结果:" + sd);
        String sd2 =timeStampToDate(1536643499744L,JAVA_DEFAULT_FORMAT);//某时间戳转换成时间
        System.out.println("格式化结果:" + sd2);
        System.out.println("stringToDate:"+stringToDate(str,JAVA_Y_M_D_FORMAT)); //打印时间对象
        System.out.println(getCurrTimetemp(stringToDate(str,JAVA_Y_M_D_FORMAT)));//某日期转时间戳
        String sd3 =timeStampToDate(getCurrTimetemp(stringToDate(str,JAVA_Y_M_D_FORMAT)),JAVA_Y_M_D_FORMAT);//某时间戳转换成时间
        System.out.println("格式化结果:" + sd3);
        //传入的year参数,应该为“目标年份”-1900,
        //月份需要-1;
        Date date1 = new Date(2018-1900,1-1,10);  
        System.out.println("当前时间是:"+date1.toLocaleString()); 
        System.out.println(dateToString(date1, "MEDIUM"));//date转string 
        System.out.println(dateToString(date1, "LONG"));
        
        System.out.println(getYear());
        System.out.println(getMonth());
        System.out.println(getDay());
        
    }
}
原文地址:https://www.cnblogs.com/zjk1/p/9627454.html