[java]察看兩個日期間差多少秒/小時/天


Java 中Date類getTime()的方法返回從1970-1-1以來的毫秒數,這是下面函數運行的基礎。

package com.example.demo;

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

import org.apache.log4j.Logger;

public class TimeTest {
    private static Logger log = Logger.getLogger(TimeTest.class);
    
    public static void main(String[] args) {
        String startTime="2019-10-26 15:27:00";
        String endTime="2019-10-26 15:27:41";
        log.info(startTime+"與"+endTime+"之間差"+getSecondsBetween(startTime,endTime)+"秒");
        
        // 2019-9-31並不存在,這里證明SimpleDateFormat將字符串轉數字不是那么讓人放心
        startTime="2019-9-31 00:00:00";
        endTime="2019-10-01 00:00:00";
        log.info(startTime+"與"+endTime+"之間差"+getSecondsBetween(startTime,endTime)+"秒");
        
        // 2019-9-32也沒報異常更讓人擔憂了
        startTime="2019-9-32 00:00:00";
        endTime="2019-10-02 00:00:00";
        log.info(startTime+"與"+endTime+"之間差"+getSecondsBetween(startTime,endTime)+"秒");
        
        startTime="2019-9-30 15:27:00";
        endTime="2019-10-26 15:27:41";
        log.info(startTime+"與"+endTime+"之間差"+getDaysBetween(startTime,endTime)+"天");
        
        startTime="2019-10-26 08:00:00";
        endTime="2019-10-26 15:41:41";
        log.info(startTime+"與"+endTime+"之間差"+getHoursBetween(startTime,endTime)+"小時");
    }
    
    /**
     * 兩個時間之間差多少秒
     * @param startTime
     * @param endTime
     * @return
     */
    public static long getSecondsBetween(String startTime,String endTime) {
        SimpleDateFormat formatter =new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss");
        long seconds = 0L;
        
        try {
            Date startDate = formatter.parse(startTime);
            long msStart = startDate.getTime();
            
            Date endDate =  formatter.parse(endTime);
            long msEnd = endDate.getTime();

            seconds = ( msEnd-msStart ) / 1000 ;

        } catch (ParseException e) {
            e.printStackTrace();
        }
        
        return seconds;
    }
    
    /**
     * 兩個時間之間差多少天
     * @param startTime
     * @param endTime
     * @return
     */
    public static long getDaysBetween(String startTime,String endTime) {
        SimpleDateFormat formatter =new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss");
        long seconds = 0L;
        
        try {
            Date startDate = formatter.parse(startTime);
            long msStart = startDate.getTime();
            
            Date endDate =  formatter.parse(endTime);
            long msEnd = endDate.getTime();

            seconds = ( msEnd-msStart ) / (1000*60*60*24) ;

        } catch (ParseException e) {
            e.printStackTrace();
        }
        
        return seconds;
    }
    
    /**
     * 兩個時間之間差多少小時
     * @param startTime
     * @param endTime
     * @return
     */
    public static long getHoursBetween(String startTime,String endTime) {
        SimpleDateFormat formatter =new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss");
        long seconds = 0L;
        
        try {
            Date startDate = formatter.parse(startTime);
            long msStart = startDate.getTime();
            
            Date endDate =  formatter.parse(endTime);
            long msEnd = endDate.getTime();

            seconds = ( msEnd-msStart ) / (1000*60*60) ;

        } catch (ParseException e) {
            e.printStackTrace();
        }
        
        return seconds;
    }
}

輸出:

 INFO [main] - 2019-10-26 15:27:00與2019-10-26 15:27:41之間差41秒
 INFO [main] - 2019-9-31 00:00:00與2019-10-01 00:00:00之間差0秒
 INFO [main] - 2019-9-32 00:00:00與2019-10-02 00:00:00之間差0秒
 INFO [main] - 2019-9-30 15:27:00與2019-10-26 15:27:41之間差26天
 INFO [main] - 2019-10-26 08:00:00與2019-10-26 15:41:41之間差7小時

--END-- 2019年10月26日15:45:14


免責聲明!

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



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