1. 程式人生 > >String型別時間的獲取與處理

String型別時間的獲取與處理

package com.base.utils;

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

public class DateUtils {
    
//    public static String nowDate(){
//        Calendar now = Calendar.getInstance();
//        return null;
//    }
    /**
     * 比較兩個日期的大小
     * @author Chao
     * format 時間格式 "yyyy-MM" "yyyy-MM-dd" "yyyy-MM-dd HH:mm:ss"
     * 返回 i 1-time1大於time2 -1-time2大於time1 0-相等
     */
    public  static int complateTime(String time1,String time2,String format) {
        int i = 100 ;
        DateFormat df = new SimpleDateFormat(format);  
        //獲取Calendar例項  
        Calendar currentTime = Calendar.getInstance();  
        Calendar compareTime = Calendar.getInstance();  
        try {  
            //把字串轉成日期型別  
            currentTime.setTime(df.parse(time1));  
            compareTime.setTime(df.parse(time2));  
        } catch (ParseException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
        //利用Calendar的方法比較大小  
        if (currentTime.compareTo(compareTime) > 0) {  
           return 1;
        }else if(currentTime.compareTo(compareTime) < 0){  
            return -1;
        }else if(currentTime.compareTo(compareTime) == 0) {
            return 0;
        }
        return i;  
    }
    /**
     * 計算日期幾天前或者幾天後時間
     * @param time 傳入的時間
     * @param state 1-加年 2-加月 3-加日
     * @param day 增加或者減少的數值
     * @param format 日期格式
     * @return 計算後的時間  "yyyy-MM-dd" "yyyy-MM-dd" "yyyy-MM-dd HH:mm:ss"
     * @throws ParseException 
     */
    public static String getDate(String time,int state,int day,String format) throws ParseException{
        String d = time;
        DateFormat df = new SimpleDateFormat(format);/*** 加一天*/
            Date dd = df.parse(d);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(dd);
        if(state==3){
            calendar.add(Calendar.DATE, day);
        }
        if(state==2){
            calendar.add(Calendar.MONTH, day);
        }
        if(state==1){
            calendar.add(Calendar.YEAR, day);
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String dateStr = sdf.format(calendar.getTime());
        return dateStr;
    }
    /**
     * 通過設定時間格式獲取當前時間
     * @param 時間格式  "yyyy-MM-dd" "yyyy-MM-dd HH:mm:ss"
     * @return string
     */
    public static String getCurrentTime(String format){
         SimpleDateFormat sdf = new SimpleDateFormat(format);
            Date date = new Date();
            String formatDate = sdf.format(date);
            return formatDate;
    }
    
    /**
     * 字串時間轉時間型別 固定日期格式 
     * @param text 字串時間 ,format "yyyy-MM-dd HH:mm:ss"
     * @return Date
     * @throws Exception
     */
    public static Date getStringToDate(String time,String format) throws Exception{
        SimpleDateFormat sdf = new SimpleDateFormat(format);//格式時間物件
        Date date = sdf.parse(time);
        return date;
    }
    /**
     * 獲取時間戳
     * @param time
     * @param format
     * @return
     * @throws Exception 
     */
    public static long getTimeStampByTime(String time,String format) throws Exception{
        return getStringToDate(time,format).getTime();
    }
    /**
     * 時間String轉Date
     * @param strDate
     * @return
     */
    public static Date strToDateLong(String strDate) {
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            ParsePosition pos = new ParsePosition(0);
            Date strtodate = formatter.parse(strDate, pos);
            return strtodate;
    }
    /**
     * 獲取兩個時間的間隔秒數
     * @param time1
     * @param time2
     * @param format
     * @return
     * @throws ParseException
     */
    public static long getDiffTime(String time1,String time2,String format) throws ParseException{
        SimpleDateFormat dfs = new SimpleDateFormat(format);
           Date begin=dfs.parse(time1);
           Date end = dfs.parse(time2);  
                                            
           long between=(end.getTime()-begin.getTime())/1000;//除以1000是為了轉換成秒
//           long min=between/60;
           return between;
    }
    
    
    
    public static void main(String[] args) throws ParseException {

        String aString = nowTime("yyyy-MM-dd HH:mm:ss");
        String test1 = "00:00:01";
        String test2 = "11:11:12";
        try {
            System.out.println(getTimeStampByTime(test1,"HH:mm:ss"));
            System.out.println(getTimeStampByTime(test2,"HH:mm:ss"));

            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }
}