java語言編程實現兩個時間相差多少天、多少小時、多少分、多少秒


 

 

 

  不多說,直接上干貨!

 

 

 

 

 

 

DateDistance.java

package zhouls.bigdata.DataFeatureSelection.test;

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

/**
 * 兩個時間差計算
 */
public class DateDistance {
    private static String distanceTime;
    public static void main(String[] args) throws Exception {
        String startday =  "2017-09-20";     
        String endday ="2017-09-28";    
        long DistanceDays = getDistanceDays(startday,endday);//兩個時間之間相差距離多少天 
        System.out.println(DistanceDays);
        
        String starttimes =  "2017-01-17 00:10:20";     
        String endtimes ="2017-01-18 00:10:21";
        long[] DistanceTimes = getDistanceTimes(starttimes,endtimes);//兩個時間相差距離多少天多少小時多少分多少秒 ,以long[]形式返回
        for (int i = 0; i < DistanceTimes.length; i++) {
            System.out.println(DistanceTimes[i]);
        }
        
        String DistanceTime = getDistanceTime(starttimes,endtimes);//兩個時間相差距離多少天多少小時多少分多少秒 ,以String形式返回
        System.out.println(DistanceTime);
    }
        
    
    
    /** 
     * 兩個時間之間相差距離多少天 
     * @param one 時間參數 1: 
     * @param two 時間參數 2: 
     * @return 相差天數 
     */ 
        public static long getDistanceDays(String starttime, String endtime) throws Exception{  
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");  
            Date one;  
            Date two;  
            long days=0;  
            try {  
                one = df.parse(starttime);  
                two = df.parse(endtime);  
                long time1 = one.getTime();  
                long time2 = two.getTime();  
                long diff ;  
                if(time1<time2) {  
                    diff = time2 - time1;  
                } else {  
                    diff = time1 - time2;  
                }  
                days = diff / (1000 * 60 * 60 * 24);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
            return days;//返回相差多少天  
        }  
          
        
        /** 
         * 兩個時間相差距離多少天多少小時多少分多少秒 
         * @param str1 時間參數 1 格式:1990-01-01 12:00:00 
         * @param str2 時間參數 2 格式:2009-01-01 12:00:00 
         * @return long[] 返回值為:{天, 時, 分, 秒} 
         */  
        public static long[] getDistanceTimes(String starttime, String endtime) {  
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
            Date one;  
            Date two;  
            long day = 0;  
            long hour = 0;  
            long min = 0;  
            long sec = 0;  
            try {  
                one = df.parse(starttime);  
                two = df.parse(endtime);  
                long time1 = one.getTime();  
                long time2 = two.getTime();  
                long diff ;  
                if(time1<time2) {  
                    diff = time2 - time1;  
                } else {  
                    diff = time1 - time2;  
                }  
                day = diff / (24 * 60 * 60 * 1000);  
                hour = (diff / (60 * 60 * 1000) - day * 24);  
                min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);  
                sec = (diff/1000-day*24*60*60-hour*60*60-min*60);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
            long[] times = {day, hour, min, sec};  
            return times;  
        }  
        
        
        
        /** 
         * 兩個時間相差距離多少天多少小時多少分多少秒 
         * @param str1 時間參數 1 格式:1990-01-01 12:00:00 
         * @param str2 時間參數 2 格式:2009-01-01 12:00:00 
         * @return String 返回值為:xx天xx小時xx分xx秒 
         */  
        public static String getDistanceTime(String starttime, String endtime) {  
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
            Date one;  
            Date two;  
            long day = 0;  
            long hour = 0;  
            long min = 0;  
            long sec = 0;  
            try {  
                one = df.parse(starttime);  
                two = df.parse(endtime);  
                long time1 = one.getTime();  
                long time2 = two.getTime();  
                long diff ;  
                if(time1<time2) {  
                    diff = time2 - time1;  
                } else {  
                    diff = time1 - time2;  
                }  
                day = diff / (24 * 60 * 60 * 1000);  
                hour = (diff / (60 * 60 * 1000) - day * 24);  
                min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);  
                sec = (diff/1000-day*24*60*60-hour*60*60-min*60);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
            return day + "" + hour + "小時" + min + "" + sec + "";  
        }  
}

 

 

 

 

 

 

  當然,我們可以進一步,將其放到一個時間的工具類去。

 

java編程如何實現多條2017-08-08 22:10:00.0這樣的時間數據,相差多少天?(隔24小時為相差1天,否則為0天)

 

java編程如何實現多條2017-01-16 22:28:11.0這樣的時間數據,轉換成Date類型Mon Jan 16 22:28:11 CST 2017這樣的時間數據

 

java編程如何實現2017-01-16 22:28:26.0這樣的時間數據,轉換成2017:01:16:22:28:26這樣的時間數據

 

 

 

 

 

 

  同時,這里大家也可以更改格式

 

 

DateDistance.java

package zhouls.bigdata.DataFeatureSelection.test;

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

/**
 * 兩個時間差計算
 */
public class DateDistance {
    private static String distanceTime;
    public static void main(String[] args) throws Exception {
        String startday =  "2017:09:20";     
        String endday ="2017:09:28";    
        long DistanceDays = getDistanceDays(startday,endday);//兩個時間之間相差距離多少天 
        System.out.println(DistanceDays);
        
        String starttimes =  "2017:01:17 00:10:20";     
        String endtimes ="2017:01:18 00:10:21";
        long[] DistanceTimes = getDistanceTimes(starttimes,endtimes);//兩個時間相差距離多少天多少小時多少分多少秒 ,以long[]形式返回
        for (int i = 0; i < DistanceTimes.length; i++) {
            System.out.println(DistanceTimes[i]);
        }
        
        String DistanceTime = getDistanceTime(starttimes,endtimes);//兩個時間相差距離多少天多少小時多少分多少秒 ,以String形式返回
        System.out.println(DistanceTime);
    }
        
    
    
    /** 
     * 兩個時間之間相差距離多少天 
     * @param one 時間參數 1: 
     * @param two 時間參數 2: 
     * @return 相差天數 
     */ 
        public static long getDistanceDays(String starttime, String endtime) throws Exception{  
            DateFormat df = new SimpleDateFormat("yyyy:MM:dd");  
            Date one;  
            Date two;  
            long days=0;  
            try {  
                one = df.parse(starttime);  
                two = df.parse(endtime);  
                long time1 = one.getTime();  
                long time2 = two.getTime();  
                long diff ;  
                if(time1<time2) {  
                    diff = time2 - time1;  
                } else {  
                    diff = time1 - time2;  
                }  
                days = diff / (1000 * 60 * 60 * 24);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
            return days;//返回相差多少天  
        }  
          
        
        /** 
         * 兩個時間相差距離多少天多少小時多少分多少秒 
         * @param str1 時間參數 1 格式:1990-01-01 12:00:00 
         * @param str2 時間參數 2 格式:2009-01-01 12:00:00 
         * @return long[] 返回值為:{天, 時, 分, 秒} 
         */  
        public static long[] getDistanceTimes(String starttime, String endtime) {  
            DateFormat df = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");  
            Date one;  
            Date two;  
            long day = 0;  
            long hour = 0;  
            long min = 0;  
            long sec = 0;  
            try {  
                one = df.parse(starttime);  
                two = df.parse(endtime);  
                long time1 = one.getTime();  
                long time2 = two.getTime();  
                long diff ;  
                if(time1<time2) {  
                    diff = time2 - time1;  
                } else {  
                    diff = time1 - time2;  
                }  
                day = diff / (24 * 60 * 60 * 1000);  
                hour = (diff / (60 * 60 * 1000) - day * 24);  
                min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);  
                sec = (diff/1000-day*24*60*60-hour*60*60-min*60);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
            long[] times = {day, hour, min, sec};  
            return times;  
        }  
        
        
        
        /** 
         * 兩個時間相差距離多少天多少小時多少分多少秒 
         * @param str1 時間參數 1 格式:1990-01-01 12:00:00 
         * @param str2 時間參數 2 格式:2009-01-01 12:00:00 
         * @return String 返回值為:xx天xx小時xx分xx秒 
         */  
        public static String getDistanceTime(String starttime, String endtime) {  
            DateFormat df = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss");  
            Date one;  
            Date two;  
            long day = 0;  
            long hour = 0;  
            long min = 0;  
            long sec = 0;  
            try {  
                one = df.parse(starttime);  
                two = df.parse(endtime);  
                long time1 = one.getTime();  
                long time2 = two.getTime();  
                long diff ;  
                if(time1<time2) {  
                    diff = time2 - time1;  
                } else {  
                    diff = time1 - time2;  
                }  
                day = diff / (24 * 60 * 60 * 1000);  
                hour = (diff / (60 * 60 * 1000) - day * 24);  
                min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);  
                sec = (diff/1000-day*24*60*60-hour*60*60-min*60);  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
            return day + "" + hour + "小時" + min + "" + sec + "";  
        }  
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM