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

[java]察看两个日期间差多少秒/小时/天的更多相关文章

  1. java 计算两个日期间的所有日期

    public static void main(String[] args) { Calendar start = Calendar.getInstance(); start.set(2014, 6, ...

  2. Java 两个日期间的天数计算

    在Java中计算两个日期间的天数,大致有2种方法:一是使用原生JDK进行计算,在JDK8中提供了更为直接和完善的方法:二是使用第三方库. 1.使用原生的JDK private static long  ...

  3. Oracle计算两天两个日期间相差的天数

    Oracle计算两天两个日期间相差的天数: select to_date('19930411','yyyymmdd')-to_date('19890507','yyyymmdd') from dual ...

  4. MySql获取两个日期间的时间差

    [1]MySql 语言获取两个日期间的时间差 DATEDIFF 函数可以获得两个日期之间的时间差.但是,这个函数得出的结果是天数. 需要直接获取秒数可使用TIMESTAMPDIFF函数.应用示例如下: ...

  5. [Xcode 实际操作]九、实用进阶-(4)计算两个日期间的差值

    目录:[Swift]Xcode实际操作 本文将演示如何计算两个日期之间的差值. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit class ...

  6. java计算两个时间相差(天、小时、分钟、秒)

    public static Long dateDiff(String startTime, String endTime, String format, String str) { // 按照传入的格 ...

  7. python获取两个日期间的工作日

    import datetime # 计算两个日期之间的工作日数,非天数. class workDays(): def __init__(self, start_date, end_date, days ...

  8. JavaScript如何计算两个日期间的时间差

    <script type="text/javascript"> /* * 获得时间差,时间格式为 年-月-日 小时:分钟:秒 或者 年/月/日 小时:分钟:秒 * 其中 ...

  9. JS获取两个日期间的所有日期

    var stime = '2018-07-25'; //开始日期 var etime = '2018-08-02'; //结束日期 getdiffdate(stime,etime); //获取两日期之 ...

随机推荐

  1. shell for 循环简单用法

    for循环:固定有限次数循环,工作中for使用最多. 语法1: for 变量名 in 变量取值列表 do 指令… done 学习方法:记住下面的内容 for 男人 in 世界 do if [ 有房 ] ...

  2. docker的学习2

    docker基本命令: run 创建一个新的容器并运行一个新的命令 -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项: -d: 后台运行容器,并返回容器 ...

  3. rsync & inotify-tools 实时同步

    1.根据之前一篇关于rsync的随笔部署好rsync服务后,可以开始inotify的部署 2.inotify的部署使用 ①.检查系统是否支持inotify [root@iZ25w1kdi5zZ ~]# ...

  4. phpstudy如何配置域名

    其他选项菜单=>站点域名管理=>站点管理填入信息后点击“新增”按钮=>点击“保存设置并生成配置文件”按钮=>打开hosts=>127.0.0.1 www.gohosts. ...

  5. docker压缩导入导出

    导出镜像 docker save <myimage>:<tag> | gzip > <myimage>_<tag>.tar.gz 导入镜像 gun ...

  6. 转 oracle数据库更新时间字段数据时的sql语句

    https://www.cnblogs.com/sun-rain/p/4921512.html ---Oracle数据库-时间函数 ---格式化时间插入update t_user u set u.mo ...

  7. 分布式可扩展存储系统 BaikalDB

    BaikalDB是一个分布式可扩展的存储系统,支持PB级结构化数据的随机实时读写. 提供MySQL接口,支持常用的SELECT,UPDATE,INSERT,DELETE语法.提供各种WHERE过滤.G ...

  8. 如何预测 Pinterest 和 Instagram 的未来发展潜力?

    作者:陈琪链接:https://www.zhihu.com/question/20169268/answer/14229241来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  9. 【基础算法-树状数组】入门-C++

    目录 基本定义 如何理解树状数组 主要操作 @ 基本定义 树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构. ...

  10. 【题解】游荡的奶牛-C++

    题目题目描述奶牛们在被划分成N行M列(2 <= N <= 100; 2 <= M <= 100)的草地上游走, 试图找到整块草地中最美味的牧草.Farmer John在某个时刻 ...