zoukankan      html  css  js  c++  java
  • [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

  • 相关阅读:
    Oracle Core 学习笔记二 Transactions 和 Consistency 说明
    Oracle AUTO_SPACE_ADVISOR_JOB 说明
    Windows 下 ftp 上传文件 脚本
    Oracle 11g 中 Direct path reads 特性 说明
    Linux 使用 wget 下载 Oracle 软件说明
    Oracle 10g read by other session 等待 说明
    Oracle 11g RAC INS06006 Passwordless SSH connectivity not set up between the following node(s) 解决方法
    SecureCRT 工具 上传下载数据 与 ASCII、Xmodem、Ymodem 、Zmodem 说明
    Oracle RAC root.sh 报错 Timed out waiting for the CRS stack to start 解决方法
    Oracle RESETLOGS 和 NORESETLOGS 区别说明
  • 原文地址:https://www.cnblogs.com/heyang78/p/11732755.html
Copyright © 2011-2022 走看看