1. 程式人生 > >時間與時間戳的轉化/時間與時間字串的轉化/字串與時間戳的轉化

時間與時間戳的轉化/時間與時間字串的轉化/字串與時間戳的轉化

package cn.meiriting.common.utils;


import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


import org.apache.commons.lang3.StringUtils;  
  
  
/** 
 * @author DingJiaCheng 
 * */  
public class DateFormatUtil {  
      
    /** 
     * 時間戳轉日期 
     * @param ms 
     * @return 
     */  
    public static Date transForDate(Integer ms){  
        if(ms==null){  
            ms=0;  
        }  
        long msl=(long)ms*1000;  
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        Date temp=null;  
        if(ms!=null){  
            try {  
                String str=sdf.format(msl);  
                temp=sdf.parse(str);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
        }  
        return temp;  
    }  
      
    /** 
     * 獲取晚上9點半的時間戳 
     *  
     * @return 
     */  
    public static int getTimes(int day, int hour, int minute) {  
        Calendar cal = Calendar.getInstance();  
        cal.add(Calendar.DATE, day);  
        cal.set(Calendar.HOUR_OF_DAY, hour);  
        cal.set(Calendar.SECOND, 0);  
        cal.set(Calendar.MINUTE, minute);  
        cal.set(Calendar.MILLISECOND, 0);  
        return (int) (cal.getTimeInMillis() / 1000);  
    }  
      
    /** 
     * 獲取當前時間往上的整點時間 
     *  
     * @return 
     */  
    public static int getIntegralTime() {  
        Calendar cal = Calendar.getInstance();  
        cal.add(Calendar.HOUR_OF_DAY, 1);  
        cal.set(Calendar.SECOND, 0);  
        cal.set(Calendar.MINUTE, 0);  
        cal.set(Calendar.MILLISECOND, 0);  
        return (int) (cal.getTimeInMillis() / 1000);  
    }  
      
    public static int getIntegralTimeEnd() {  
        Calendar cal = Calendar.getInstance();  
        cal.set(Calendar.HOUR_OF_DAY, 24);  
        cal.set(Calendar.SECOND, 0);  
        cal.set(Calendar.MINUTE, 0);  
        cal.set(Calendar.MILLISECOND, 0);  
        return (int) (cal.getTimeInMillis() / 1000);  
    }  
      
      
      
  
      
      
    /** 
     * 時間戳轉日期 
     * @param ms 
     * @return 
     */  
    public static Date transForDate3(Integer ms){  
        if(ms==null){  
            ms=0;  
        }  
        long msl=(long)ms*1000;  
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");  
        Date temp=null;  
        if(ms!=null){  
            try {  
                String str=sdf.format(msl);  
                temp=sdf.parse(str);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
        }  
        return temp;  
    }  
    /** 
     * 時間戳轉日期 
     * @param ms 
     * @return 
     */  
    public static Date transForDate(Long ms){  
        if(ms==null){  
            ms=(long)0;  
        }  
        long msl=(long)ms*1000;  
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        Date temp=null;  
        if(ms!=null){  
            try {  
                String str=sdf.format(msl);  
                temp=sdf.parse(str);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
        }  
        return temp;  
    }  
      
      
    public static String transForDate1(Integer ms){  
        String str = "";  
        if(ms!=null){  
            long msl=(long)ms*1000;  
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
              
            if(ms!=null){  
                try {  
                    str=sdf.format(msl);  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        }         
        return str;  
    }  
    public static String transForDate2(Integer ms){  
        String str = "";  
        if(ms!=null){  
            long msl=(long)ms*1000;  
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");  
              
            if(ms!=null){  
                try {  
                    str=sdf.format(msl);  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        }         
        return str;  
    }  
      
    public static String transForDate4(Integer ms){  
        String str = "";  
        if(ms!=null){  
            long msl=(long)ms*1000;  
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy.MM.dd");  
              
            if(ms!=null){  
                try {  
                    str=sdf.format(msl);  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        }         
        return str;  
    }  
      
      
    public static String transForDate5(Integer ms){  
        String str = "";  
        if(ms!=null){  
            long msl=(long)ms*1000;  
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");  
              
            if(ms!=null){  
                try {  
                    str=sdf.format(msl);  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        }         
        return str;  
    }  
      
    public static String transForDateInChinese(Integer ms){  
        String str = "";  
        if(ms!=null){  
            long msl=(long)ms*1000;  
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");  
              
            if(ms!=null){  
                try {  
                    str=sdf.format(msl);  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        }         
        return str;  
    }  
      
    /** 
     * 日期轉時間戳 
     * @param date 
     * @return 
     */  
    public static Integer transForMilliSecond(Date date){  
        if(date==null) return null;  
        return (int)(date.getTime()/1000);  
    }  
      
    /** 
     * 獲取當前時間戳 
     * @return 
     */  
    public static Integer currentTimeStamp(){  
        return (int)(System.currentTimeMillis()/1000);  
    }  
      
    /** 
     * 日期字串轉時間戳 
     * @param dateStr 
     * @return 
     */  
    public static Integer transForMilliSecond(String dateStr){  
        Date date = DateFormatUtil.formatDate(dateStr);  
        return date == null ? null : DateFormatUtil.transForMilliSecond(date);  
    }  
    /** 
     * 日期字串轉時間戳 
     * @param dateStr 
     * @return 
     */  
    public static Integer transForMilliSecond(String dateStr,String format){  
        Date date = DateFormatUtil.formatDate(dateStr,format);  
        return date == null ? null : DateFormatUtil.transForMilliSecond(date);  
    }  
    /** 
     * 日期字串轉時間戳 
     * @param dateStr 
     * @param 格式 如"yyyy-mm-dd" 
     * @return 
     */  
    public static Integer transForMilliSecondByTim(String dateStr,String tim){  
        SimpleDateFormat sdf=new SimpleDateFormat(tim);  
        Date date =null;  
        try {  
            date = sdf.parse(dateStr);  
        } catch (ParseException e) {  
            e.printStackTrace();  
        }  
        return date == null ? null : DateFormatUtil.transForMilliSecond(date);  
    }  
    /** 
     * 字串轉日期,格式為:"yyyy-MM-dd HH:mm:ss" 
     * @param dateStr 
     * @return 
     */  
    public static Date formatDate(String dateStr){  
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        Date result=null;  
        try {  
            result = sdf.parse(dateStr);  
        } catch (ParseException e) {  
            e.printStackTrace();  
        }  
        return result;  
    }  
    /** 
     * 字串轉日期,格式為:"yyyy-MM-dd HH:mm:ss" 
     * @param dateStr 
     * @return 
     */  
    public static Date formatDate(String dateStr,String format){  
        SimpleDateFormat sdf=new SimpleDateFormat(format);  
        Date result=null;  
        try {  
            result = sdf.parse(dateStr);  
        } catch (ParseException e) {  
            e.printStackTrace();  
        }  
        return result;  
    }  
    /** 
     * 日期轉字串 
     * @param date 
     * @return 
     */  
    public static String formatDate(Date date){  
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        String result=null;  
        result = sdf.format(date);  
        return result;  
    }  
    /** 
     * 日期轉字串 
     * @param date 
     * @return 
     */  
    public static String formatDate(Date date,String format){  
        SimpleDateFormat sdf=new SimpleDateFormat(format);  
        String result=null;  
        result = sdf.format(date);  
        return result;  
    }  
    /** 
     * 時間戳格式化輸出(httl模版用) 
     *  
     * @param ms        時間戳 
     * @param format    格式化 
     * @return 
     */  
    public static String transForDate(Integer ms, String format){  
        String str = "";  
        if(ms!=null){  
            long msl=(long)ms*1000;  
            SimpleDateFormat sdf=new SimpleDateFormat(format);  
            if(!ms.equals(0)){  
                try {  
                    str=sdf.format(msl);  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
        return str;  
    }     
      
    /** 
     * 取BigDecimal型別數的整數或小數部分(httl模版用) 
     *  
     * @param b 值 
     * @param mode  模式 0取整 1去小數部分 
     * @return 
     */  
    public static String splitBigDecimal(BigDecimal b, int mode) {  
        DecimalFormat df = new DecimalFormat("0.00");  
        String s = df.format(b);  
        if(mode==0){  
            return s.split("\\.")[0];  
        }else {  
            return "."+s.split("\\.")[1];  
        }  
    }  
      
    /** 
     * 計算兩個日期之間差的天數(httl模版用) 
     *  
     * @param ts1   時間戳1 
     * @param ts2   時間戳2 
     * @return 
     */  
    public static int caculate2Days(Integer ts1, Integer ts2) {  
        Date firstDate = DateFormatUtil.transForDate(ts1);  
        Date secondDate = DateFormatUtil.transForDate(ts2);  
        Calendar calendar = Calendar.getInstance();  
        calendar.setTime(firstDate);  
        int dayNum1 = calendar.get(Calendar.DAY_OF_YEAR);  
        calendar.setTime(secondDate);  
        int dayNum2 = calendar.get(Calendar.DAY_OF_YEAR);  
        return Math.abs(dayNum1 - dayNum2);  
    }  
      
    /** 
     * 給手機加密中間四位加星號 
     *  
     * @param mobile 
     * @return 
     */  
    public String mobileSerect(String mobile){  
        if(!StringUtils.isBlank(mobile)){  
            int between = mobile.length()/2;  
            mobile = mobile.substring(0, between-2)+"****"+mobile.substring(between+2, mobile.length());  
        }  
        return mobile;  
    }  
      
    /** 
     * 給郵箱加密加星號 
     *  
     * @param email 
     * @return 
     */  
    public String emailSerect(String email) {  
        if(!StringUtils.isBlank(email)){  
            int length = email.lastIndexOf("@");  
            email = email.substring(0, 2)+"****"+email.substring(length-2, email.length());  
        }  
        return email;  
    }  
      
    /** 
     * BigDecimal型別資料相加 
     *  
     * @param BigDecimal source 
     * @param BigDecimal target 
     * @return 
     */  
    public BigDecimal sumBigDicimal(BigDecimal source, BigDecimal target) {  
        source = source.add(target);  
        return source;  
    }  
      
    /** 
     * BigDecimal型別資料相加 
     *  
     * @param BigDecimal source 
     * @param BigDecimal target 
     * @return 
     */  
    public BigDecimal sumBigDicimalAndDouble(BigDecimal source, Double target) {  
        BigDecimal new_target = new BigDecimal(target);  
        source = source.add(new_target);  
        return source;  
    }  
      
    /** 
     * BigDecimal型別資料相減 
     *  
     * @param BigDecimal source 
     * @param BigDecimal target 
     * @return 
     */  
    public BigDecimal subBigDicimal(BigDecimal source, BigDecimal target) {  
        source = source.subtract(target);  
        return source;  
    }  
      
    /** 
     * 獲取傳入時間和當前時間的時間差 
     * @return 
     */  
    public static Long getTimediff(int timeStamp){  
        Date d1 = DateFormatUtil.transForDate(timeStamp);  
        Date today = new Date();  
        if(d1.getTime()<today.getTime()){  
            return null;  
        }  
        return (d1.getTime()-today.getTime())/1000;  
    }  
  
    /** 
     * 獲取某周的第一天日期 
     * @param week 0 當週 1 上一週 -1 下一週 
     * @return 
     */  
    public static String weekFirstDay(int week){  
        Calendar c1 = Calendar.getInstance();  
        int dow = c1.get(Calendar.DAY_OF_WEEK);  
        c1.add(Calendar.DATE, -dow-7*(week-1)-5 );  
        String d1 = new SimpleDateFormat("yyyy-MM-dd").format(c1.getTime());  
        return d1+" 00:00:00";  
    }  
      
    /** 
     * 當前時間加一年 
     */  
    public static String addYear(int startTime){  
        Date firstDate = DateFormatUtil.transForDate(startTime);  
        Calendar calendar = Calendar.getInstance();  
        calendar.setTime(firstDate);  
        calendar.add(Calendar.YEAR,1);  
        String d1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());  
        return d1;  
    }  
      
    /** 
     * 獲取某周的最後一天日期 
     * @param week 
     * @return 
     */  
    public static String weekLastDay(int week){  
        Calendar c1 = Calendar.getInstance();  
        int dow = c1.get(Calendar.DAY_OF_WEEK);  
        c1.add(Calendar.DATE, -dow-7*(week-1)+1);  
        String d1 = new SimpleDateFormat("yyyy-MM-dd").format(c1.getTime());  
        return d1+" 23:59:59";  
    }     
      
    /** 
     * 和當前時間比對 
     * @return 
     */  
    public static boolean greaterThanNow(int timeStamp){  
        Date d1 = DateFormatUtil.transForDate(timeStamp);  
        Date today = new Date();  
        if(d1.getTime()>=today.getTime()){  
            return true;  
        }  
        return false;  
    }  
  
      
      
    /** 
     * HH:mm:ss格式時間轉換為1970-01-01日的時間戳(也就是隻有時間沒有日期的情況要求使用時間戳表示時間) 
     * @author DingJiaCheng 
     * */  
    public static int transFromTime(String time){  
        return transForMilliSecond("1970-01-01 "+time,"yyyy-mm-dd HH:mm:ss");  
    }  
      
    /** 
     * 時間戳轉換為HH:mm:ss格式時間(日期去除) 
     * @author DingJiaCheng 
     * */  
    public static String transToTime(int time){  
        String s = new String(transForDate1(time));  
        String ss[] = s.split(" ");  
        return ss[1];  
    }  
      
    public static int transToChuo(String dateString){  
        SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd");  
        int res = 0;  
        try {  
            Date date=simpleDateFormat .parse(dateString);  
            res = (int) date.getTime();  
        } catch (ParseException e) {  
            e.printStackTrace();  
        }  
        return res;  
    }  
      
    // 獲取當前月的第一天
    public static Integer getTheFirstDayOfTheCurrentMonth() {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Calendar calendar  = Calendar.getInstance();//獲取當前日期
    calendar .set(Calendar.DAY_OF_MONTH,1);//設定為1號,當前日期既為本月第一天 
    calendar .set(Calendar.HOUR_OF_DAY,0); // 將小時置0
    calendar.set(Calendar.MINUTE,0);// 將分鐘置0
    calendar.set(Calendar.SECOND,0);// 將秒置0
    calendar.set(Calendar.MILLISECOND,0);
    String firstDay = format.format(calendar .getTime());  // 得到時間字元
    System.out.println(firstDay);
    Integer newFirstDay = DateFormatUtil.transForMilliSecond(firstDay);// 將時間字元轉化成時間戳
    return newFirstDay;
    }
    
    // 獲取當前月的最後一天
    public static Integer getTheLastDayOfTheCurrentMonth() {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Calendar calendar  = Calendar.getInstance();//獲取當前日期
    calendar.add(Calendar.MONTH, 1);// 當前月份加1,得到下一月份
    calendar .set(Calendar.DAY_OF_MONTH,1);//設定為1號,當前日期既為本月第一天 
    calendar .set(Calendar.HOUR_OF_DAY,0); // 將小時置0
    calendar.set(Calendar.MINUTE,0);// 將分鐘置0
    calendar.set(Calendar.SECOND,-1);// 將秒減一     得到的 23:59:59
    calendar.set(Calendar.MILLISECOND,0);
    String lastDay = format.format(calendar.getTime());
    System.out.println(lastDay);
    Integer newFirstDay = DateFormatUtil.transForMilliSecond(lastDay);// 將時間字元轉化成時間戳
   
    return newFirstDay;
    }
    
    
    public static void main(String[] args) {  
          
        //System.out.println(getIntegralTimeEnd());  
        //System.out.println(transForDate2(transForMilliSecond("2015-02-25 00:00:00")));  
        //System.out.println(transForMilliSecond("2016-01-25","yyyy-mm-dd"));  
        //System.out.println(transForDate1(transForMilliSecond("1970-01-01 00:00:00","yyyy-mm-dd HH:mm:ss")));  
        //System.out.println(currentTimeStamp());  
        //System.out.println(transForDate(currentTimeStamp()));  
        //System.out.println(new Date());  
        //System.out.println(DateUtils.getDate());  
        //System.out.println(transFromTime("00:00:01"));  
        //System.out.println(transToTime(transFromTime("15:01:13")));  
   
    /*Date date = new Date();
     String str = DateFormatUtil.formatDate(date,"yyyyMMddHHmmss");
     
     int it = (int) Math.round(Math.random()*(99999-10000)+10000);
     String name = str+"_"+it+".";
     
    System.out.println(name);
   
    File file = new File("HelloWorld.java");  
        String fileName = file.getName();  
        String suffix = fileName.substring(fileName.lastIndexOf("."));  
        System.out.println(suffix);  */
   
    // 獲取一個時間段
    /*String time = "2018-05-11 00:00:00 - 2018-05-19 00:00:00";
    String time_1 = time.substring(0,20);
    String time_2 = time.substring(22, 41);
    Integer date_1 = DateFormatUtil.transForMilliSecond(time_1, "yyyy-MM-dd HH:mm:ss");
    Integer date_2 = DateFormatUtil.transForMilliSecond(time_2, "yyyy-MM-dd HH:mm:ss");
   
    System.out.println(time_1 + "::::::" + time_2);
    System.out.println(date_1 + "######" + date_2);*/
   
   
    }
}