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

  • 相关阅读:
    防止浏览器记住用户名及密码的简单实用方法
    读懂CommonJS的模块加载
    gitHub上如何设置或者取消电子邮箱提醒
    echarts如何修改数据视图dataView中的样式
    vue中使用base64和md5
    java的特点
    java 运算符
    有关于分布式和SOA的理解
    WebService到底是什么
    并行计算、分布式计算和云计算的区别
  • 原文地址:https://www.cnblogs.com/heyang78/p/11732755.html
Copyright © 2011-2022 走看看