日期工具類 記錄一下(java獲取日期時間信息)



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


public class Datex {
    
    public static String getSeqDateTime() {
        return new java.text.SimpleDateFormat("yyyyMMddHHmmss")
                .format(new Date());
    }
    
    public static String getSeqDate() {
        return new java.text.SimpleDateFormat("yyyyMMdd")
                .format(new Date());
    }
    
    public static String getMonth () {
        return new java.text.SimpleDateFormat("yyyy-MM")
                .format(new Date());
    }
    
    /**
     * 當前日期 - 字符串
     */
    public static String getStrDate(){
        return new java.text.SimpleDateFormat("yyyy-MM-dd")
                .format(new Date());
    }
    
    /**
     * 
     * 日期 - 字符串
     */
    public  static String getStrDate(Date date){
        return new java.text.SimpleDateFormat("yyyy-MM-dd")
        .format(date);
    }
    
    /**
     * 
     * 當前日期時間 - 字符串
     */
    public static String getStrDateTime(){
        return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
                .format(new Date());
    }
    
    /**
     * 
     * 日期時間 - 字符串
     */
    public  static String getStrDateTime(Date date){
        return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
        .format(date);
    }
    
    /**
     * 
     * @return 返回當前Date()
     */
    public static Date getDate(){
        return new Date();
    }
    
    /**
     * 字符串 - 日期時間
     * @param yyyy-MM-dd HH:mm:ss
     * @return Date
     */
    public static Date getDateTime(String datetime){
        java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = null;
        try {
            d = sd.parse(datetime);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return d;
    }
    
    /**
     * 字符串 - 日期
     * @param yyyy-MM-dd
     * @return Date
     */
    public static Date getDate(String date){
        java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
        Date d = null;
        try {
            d = sd.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return d;
    }
    
    /**
     * 日期加減
     * @param date 日期
     * @param count 加的天數,可以爲負
     * @return 日期字符串
     */
    public static String addDate(String date,int count){
        Calendar c = Calendar.getInstance();
        c.setTime(Datex.getDate(date));
        c.add(Calendar.DATE, count);
        return getStrDate(c.getTime());
    }
    
    /**
     * 日期時間加減
     * @param datetime 日期時間
     * @param count 加多少,可以爲負
     * @param type 加的類型,Calendar.DATE或其他
     * @return 日期時間字符串
     */
    public static String addDateTime(String datetime,int count,int type){
        Calendar c = Calendar.getInstance();
        c.setTime(Datex.getDateTime(datetime));
        c.add(type, count);
        return getStrDateTime(c.getTime());
    }
    
    /**
     * 日期間隔多少天
     * @param date1 前日期
     * @param date2 後日期
     * @return
     */
    public static int intervalDay(String date1,String date2){
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Calendar cal = Calendar.getInstance();
            cal.setTime(sdf.parse(date1));
            long time1 = cal.getTimeInMillis();
            cal.setTime(sdf.parse(date2));
            long time2 = cal.getTimeInMillis();
            long between_days = (time2 - time1) / (1000 * 3600 * 24);
            int i = Integer.parseInt(String.valueOf(between_days));
            return i;
        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }
        
    }
    
    /**
     * 過了多少小時
     * @param datetime 之前日期時間
     * @return
     */
    public static int intervalHour(String datetime){
        try {
            long now = new Date().getTime();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date d2 = sdf.parse(datetime);
            long before = d2.getTime();
            long between_hour = (now - before) / (1000 * 3600);
            int i = Integer.parseInt(String.valueOf(between_hour));
//            System.out.println(before + "," + now + ",i=" + i);
            return i;
        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }
    }
    
    /**
     * 返回時間描述:如“剛剛”,“10分鐘前”
     * @param 字符串datetime
     * @return
     */
    public static String getDateTimeState(String datetime){
        Date d = new Date();
        java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d2 = null;
        String r = "";
        try {
            d2 = sd.parse(datetime);
            long l = d.getTime() - d2.getTime();
            long day=l/(24*60*60*1000);
            long hour=(l/(60*60*1000)-day*24);
            long min=((l/(60*1000))-day*24*60-hour*60);
            
           if(day > 0){
               r = day + "天前";
           }else if(hour > 0 ){
               r = hour+"小時前";
           }else if(min > 0){
                   r = min+"分前";
           }else{
               r = "剛剛";
           }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        
       return r;
    }
    
    /**
     * 返回截止時間
     * @param 字符串datetime
     * @return
     */
    public static String getDateTimeLimit(String datetime){
        Date d = new Date();
        java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d2 = null;
        String r = "";
        try {
            if(datetime.length() == 16) datetime = datetime + ":00";
            if(datetime.length() == 10) datetime = datetime + " 00:00:00";
            d2 = sd.parse(datetime);
            long l = d2.getTime() - d.getTime();//跟時間描述反過來
            long day=l/(24*60*60*1000);
            long hour=(l/(60*60*1000)-day*24);
            long min=((l/(60*1000))-day*24*60-hour*60);
            long sec=((l/1000)-day*24*60*60-hour*60*60-min*60);
            
           if(day > 0){
               r = "剩餘" + day + "天截止";
           }else if(hour > 0 ){
               r = "剩餘" + hour + "小時截止";
           }else if(min > 0){
               r = "剩餘" + min + "分鐘截止";
           }else if(sec > 0){
               r = "剩餘" + sec + "秒截止";
           }else{
               r = "已截止";
           }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        
       return r;
    }
    
    /**
     * 返回截止時間
     * @param 字符串datetime
     * @return
     */
    public static String getDateTimeLimit_withHour(String datetime){
        Date d = new Date();
        java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d2 = null;
        StringBuilder sb = new StringBuilder();
        try {
            if(datetime.length() == 16) datetime = datetime + ":59";
            if(datetime.length() == 10) datetime = datetime + " 23:59:59";
            d2 = sd.parse(datetime);
            long l = d2.getTime() - d.getTime();//跟時間描述反過來
            long day=l/(24*60*60*1000);
            long hour=(l/(60*60*1000)-day*24);
            long min=((l/(60*1000))-day*24*60-hour*60);
            long sec=((l/1000)-day*24*60*60-hour*60*60-min*60);
            
            
            if(day > 0){
                sb.append(day+"天");
                if(hour > 0 ){
                    sb.append(hour+"小時");
                }
            }else if(hour > 0 ){
                sb.append(hour+"小時");
                if(min > 0){
                    sb.append(min+"分鐘");
                }
            }else if(min > 0){
                sb.append(min+"分鐘");
                if(sec > 0){
                    sb.append(sec+"秒");
                }
            }else if(sec > 0){
                sb.append(sec+"秒");
            }else{
                sb.append("");
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        
        return sb.toString();
    }
    
    /**
     * 獲取到截止日期的時間
     * @param datetime
     * @return
     */
    @SuppressWarnings("unused")
    public static long getDeadLineHours(String datetime){
        Date d = new Date();
        java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d2 = null;
        long sb = 0;
        try {
            if(datetime.length() == 16) datetime = datetime + ":59";
            if(datetime.length() == 10) datetime = datetime + " 23:59:59";
            d2 = sd.parse(datetime);
            long l = d2.getTime() - d.getTime();//跟時間描述反過來
            long day=l/(24*60*60*1000);
            long hour=(l/(60*60*1000)-day*24);
            long min=((l/(60*1000))-day*24*60-hour*60);
            long sec=((l/1000)-day*24*60*60-hour*60*60-min*60);
            
            
            if(day > 0){
                sb=day*24;
                if(hour > 0 ){
                    sb=sb+hour;
                }
            }else if(hour > 0 ){
                sb=hour;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return sb;
    }
    /**
     * 獲取到截止日期的天數
     * @param datetime
     * @return
     */
    @SuppressWarnings("unused")
    public static long getDeadLineDays(String datetime){
        Date d = new Date();
        java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d2 = null;
        long sb = 0;
        try {
            if(datetime.length() == 16) datetime = datetime + ":59";
            if(datetime.length() == 10) datetime = datetime + " 23:59:59";
            d2 = sd.parse(datetime);
            long l = d2.getTime() - d.getTime();//跟時間描述反過來
            long day=l/(24*60*60*1000);
            sb=day;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return sb;
    }
    
    
    /**
     * 返回日期描述:如“今天”,“昨天”,“明天”,日期
     * @param datetime
     * @return
     */
    public static String getDateState(String date){
        java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
        Date d2 = null;
        String r = "";
        try {
            Date d = sd.parse(Datex.getStrDate());
            d2 = sd.parse(date);
            long l = d.getTime() - d2.getTime();
            long day=l/(24*60*60*1000);
            
           if(day == 0){
               r = "今天";
           }else if(day == -1){
               r = "明天";
           }else if(day == 1){
               r = "昨天";
           }else{
               r = date;
           }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        
       return r;
    }
    
    /**
    * yyyy年MM月dd日 HH:mm
    * @return
    */
    public static String changeStr(String str){
        Date d = getDateTime(str);
        String s = new java.text.SimpleDateFormat("yyyy年MM月dd日 HH:mm")
        .format(d);
        return s;
    }
    
    
    public static Integer compareDateTime(String datetime1,String datetime2){
        java.text.SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
        //獲取Calendar實例  
        Calendar currentTime = Calendar.getInstance();  
        Calendar compareTime = Calendar.getInstance();  
        try {  
            //把字符串轉成日期類型  
            currentTime.setTime(df.parse(datetime1));  
            compareTime.setTime(df.parse(datetime2));  
        } catch (ParseException e) {  
            e.printStackTrace();  
        }  
        //利用Calendar的方法比較大小  
        Integer i;
        if (currentTime.compareTo(compareTime) > 0) {  
           i=1;
        }else if(currentTime.compareTo(compareTime)==0){ 
            i=0;
        }else{
            i=-1;
        }
        return i;
    }  
    
    /**
     * 返回周幾,週日=1,週一=2
     * @param cdate yyyy-MM-dd
     * @return
     */
    public static int getWeek(String cdate){
        try {
            java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
            Calendar c = Calendar.getInstance();
            c.setTime(sd.parse(cdate));
            return c.get(Calendar.DAY_OF_WEEK);
        } catch (ParseException e) {
            e.printStackTrace();
            return 0;
        }
    }
    
    /**
     * 返回今天第幾周,如:201719
     * @param cdate,日期如2017-04-17
     * @return
     */
    public static String getYearWeek(String cdate){
        try {
            java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
            Calendar c=Calendar.getInstance(); 
            c.setTime(sd.parse(cdate));
            return c.get(Calendar.YEAR) + "" +  c.get(Calendar.WEEK_OF_YEAR);
        }catch (ParseException e) {
            e.printStackTrace();
            return null;
        }            
    }
    
    /**
     * 返回周幾字符串
     * @param cdate yyyy-MM-dd
     * @return
     */
    public static String getWeekStr(String cdate){
        int i = getWeek(cdate);
        switch (i) {
        case 1:
            return "星期天";
        case 2:
            return "星期一";
        case 3:
            return "星期二";
        case 4:
            return "星期三";
        case 5:
            return "星期四";
        case 6:
            return "星期五";
        case 7:
            return "星期六";
        default:
            return "";
        }
    }
    
    
    public static void main(String[] args) throws ParseException {
        int i = getWeek("2019-08-07");
        System.out.println(getStrDate());
 
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章