Java计算Date类时间差实例代码演示

 更新时间:2023年12月27日 16:00:57   作者:ZeroBug源码分享社  
最近工作中遇到需要计算时间差,这里给大家总结下,下面这篇文章主要给大家介绍了关于Java计算Date类时间差的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

在Java中,我们可以使用Date类来表示日期和时间。如果我们想要计算两个日期之间的时间差,我们可以使用以下步骤:

  • 创建两个Date对象,表示要比较的两个日期。
  • 使用getTime()方法获取每个Date对象的时间戳。
  • 计算两个时间戳之间的差值,以毫秒为单位。
  • 将毫秒转换为所需的时间单位(例如秒,分钟,小时等)。

下面是一个示例代码,演示如何计算两个日期之间的时间差:

import java.util.Date;

	public class DateDifferenceExample {    public static void main(String[] args) {
	        // 创建两个Date对象
	        Date date1 = new Date();
	        Date date2 = new Date(System.currentTimeMillis() + 100000);        // 获取每个Date对象的时间戳
	        long time1 = date1.getTime();
	        long time2 = date2.getTime();        // 计算两个时间戳之间的差值,以毫秒为单位
	        long diff = time2 - time1;        // 将毫秒转换为秒
	        long diffSeconds = diff / 1000;        // 将毫秒转换为分钟
	        long diffMinutes = diff / (60 * 1000);        // 将毫秒转换为小时
	        long diffHours = diff / (60 * 60 * 1000);        // 输出时间差
	        System.out.println("时间差(毫秒):" + diff);
	        System.out.println("时间差(秒):" + diffSeconds);
	        System.out.println("时间差(分钟):" + diffMinutes);
	        System.out.println("时间差(小时):" + diffHours);
	    }
	}

输出结果如下:

时间差(毫秒):100000
时间差(秒):100
时间差(分钟):1
时间差(小时):0

在上面的示例中,我们创建了两个Date对象,一个表示当前时间,另一个表示当前时间加上100000毫秒(即100秒)。然后,我们获取每个Date对象的时间戳,并计算它们之间的差值。最后,我们将差值转换为秒,分钟和小时,并将它们输出到控制台。总结:在Java中,我们可以使用Date类来表示日期和时间。如果我们想要计算两个日期之间的时间差,我们可以使用getTime()方法获取每个Date对象的时间戳,并计算它们之间的差值。然后,我们可以将差值转换为所需的时间单位,并将它们输出到控制台。

附:java两个时间戳如何求出相差小时数,且保留小数点后两位

两个时间戳求差

很简单的一个运算法则,假设开始时间与结束时间都能取到 分别为 startTime和endTime,都为Date类型。这时候要求取它们之间的差集,就把他们相减就可以了

差集 = endTime - startTime

此时需要注意 所取得的差集是一个long型的时间戳,要转换为小时,就要将这个差集除以一小时的毫秒数。

double 小时= (double)差集/60*60*1000

注意,此时用double转换这个小时呢,就是为了将其转换为有小数点的类型,因为一小时是3600000毫秒,如果两者差集小于这个数字,那么这样运算出来就为0,与我们想得到的结果就不符了。

但得到double类型是一个很长的小数,后面可能不止两位,这时候我们就要将其来个四舍五入,小数点后保留两位(当然这个保留多少位都是自己定义的)

BigDecimal a= BigDecimal.valueOf(小时);
double waitTime = a.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

这时候获取道得waitTime就是我们要得到的小数点后保留两位的小时数了。例如:0.5小时

具体代码如下:

long times = endTime -startTime;
double hours = (double) times/(60*60*1000);
BigDecimal a= BigDecimal.valueOf(hours);
double waitTime = a.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

通过这个例子举一反三,就可以算出相差多少年、月、日、时、分、秒啦。

总结

到此这篇关于Java计算Date类时间差的文章就介绍到这了,更多相关Java计算Date类时间差内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis中Mapper标签总结大全

    Mybatis中Mapper标签总结大全

    这篇文章主要介绍了Mybatis中Mapper标签总结大全,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • SpringBoot登录验证token拦截器的实现

    SpringBoot登录验证token拦截器的实现

    本文主要介绍了SpringBoot登录验证token拦截器的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • java模仿windows计算器示例

    java模仿windows计算器示例

    这篇文章主要介绍了java模仿windows计算器示例,需要的朋友可以参考下
    2014-05-05
  • Java 导出excel进行换行的案例

    Java 导出excel进行换行的案例

    这篇文章主要介绍了Java 导出excel进行换行的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 浅谈Java方法调用的优先级问题

    浅谈Java方法调用的优先级问题

    这篇文章主要介绍了浅谈Java方法调用的优先级问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • mybatis.type-aliases-package之巨坑的解决

    mybatis.type-aliases-package之巨坑的解决

    这篇文章主要介绍了mybatis.type-aliases-package之巨坑的解决,具有很好的参考价值,希望对大家有所帮助。
    2021-09-09
  • SpringBoot整合Sa-Token实现登录认证的示例代码

    SpringBoot整合Sa-Token实现登录认证的示例代码

    本文主要介绍了SpringBoot整合Sa-Token实现登录认证的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 简单的java读取文件示例分享

    简单的java读取文件示例分享

    这篇文章主要介绍了java读取txt文件内容,示例很简单,代码里有注释,大家直接看代码吧
    2014-01-01
  • SpringBoot生成条形码的方案详解

    SpringBoot生成条形码的方案详解

    在Spring Boot, Spring Cloud 项目中整合ZXing库来生成条形码在特定行业也是一个常见需求,ZXing是google开源的一个功能强大的Java库,专门用于二维码/条形码等的生成与解析,所以本文给大家介绍了SpringBoot生成条形码的方案,需要的朋友可以参考下
    2024-08-08
  • SSM 整合的配合文件(分享)

    SSM 整合的配合文件(分享)

    下面小编就为大家分享一篇SSM 整合的配合文件,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12

最新评论