最近使用Java8编写代码时,需要计算时间差,现整理如下

前言

本次使用了Java8提供的ChronoUnit工具类,它主要提供以下几种时间维度

枚举

枚举 说明
NANOS 毫微秒(毫秒的1000000分之一)
MICROS 微秒(毫秒的1000分之一)
MILLIS 毫秒
SECONDS
MINUTES 分钟
HOURS 小时
HALF_DAYS 半天
DAYS
WEEKS
MONTHS
YEARS
DECADES 十年
CENTURIES 世纪(百年)
MILLENNIA 千年
ERAS 纪元(1000_000_000L年)

枚举提供一个betwwen方法,接收两个参数,都是Temporal类型。

Temporal是LocalDateLocalTimeLocalDateTime的声明接口,因此可以直接传递我们常用的时间类。

示例

LocalDateTime time1 = LocalDateTime.of(2019, 11, 1, 0, 0);
LocalDateTime time2 = LocalDateTime.of(2019, 12, 2, 0, 0); System.out.println("===输出秒===");
System.out.println(ChronoUnit.SECONDS.between(time1, time2));
System.out.println("==========="); System.out.println("===输出小时===");
System.out.println(ChronoUnit.HOURS.between(time1, time2));
System.out.println("==========="); System.out.println("===输出半天===");
System.out.println(ChronoUnit.HALF_DAYS.between(time1, time2));
System.out.println("==========="); System.out.println("===输出天===");
System.out.println(ChronoUnit.DAYS.between(time1, time2));
System.out.println("==========="); System.out.println("===输出周===");
System.out.println(ChronoUnit.WEEKS.between(time1, time2));
System.out.println("==========="); System.out.println("===输出月===");
System.out.println(ChronoUnit.MONTHS.between(time1, time2));
System.out.println("==========="); System.out.println("===输出年===");
System.out.println(ChronoUnit.YEARS.between(time1, time2));
System.out.println("===========");

输出结果

===输出秒===
2678400
===========
===输出小时===
744
===========
===输出半天===
62
===========
===输出天===
31
===========
===输出周===
4
===========
===输出月===
1
===========
===输出年===
0
===========

java8 time计算时间差的更多相关文章

  1. Android计算时间差

    想要写个根据消耗时长来确定开始结束时间的小工具,发现Android处理时间上有点累,可能是我没找到合适的方法吧,先把我的解决办法贴出来,有好的解决方法还希望提醒一下: 1.根据时间字符串获取毫秒数 p ...

  2. 【转载】c/c++在windows下获取时间和计算时间差的几种方法总结

    一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...

  3. C#计算时间差值

    /// <summary> /// 计算时间差值 /// </summary> /// <param name="DateTime1">< ...

  4. 登录超时自动退出,计算时间差-b

    // 此方法适用于所有被创建过的controller,且当前controller生命周期存在,如有错误的地方望大神斧正 //  说一下我们的需求和实现原理,需求:在点击home键退出但没有滑飞它,5分 ...

  5. python分页和session和计算时间差

    分页 #!/usr/bin/env python # -*- coding:utf-8 -*- class Pagenation: def __init__(self,current_page,all ...

  6. js计算时间差,包括计算,天,时,分,秒

    收集两个计算时间差的计算方法代码片段: var date1=new Date(); //开始时间 var date2=new Date(); //结束时间 var date3=date2.getTim ...

  7. Android中计算时间差的实现方法

    今天为“至简天气”增加了一项功能:在启动时根据上次更新数据的时间判断是否有必要更新数据,因为 weather.com.cn 的实况数据貌似是25分钟才会刷新一次,只有在据上次更新的时间达25分钟以上才 ...

  8. datetime 计算时间差

    计算时间差: .date()       # 格式化 .timedelta()         # 时间差 import datetime # 今天 today = datetime.datetime ...

  9. excel计算时间差值

    excel计算时间差值 2018/10/1 10:59:00 减去 2018/9/21 1:05:13 获取 多少天. 如1.2天.这种. ==

随机推荐

  1. Shell脚本之流程控制(if、for、while)

    if 判断 if语句的三种格式: (1)if (2)if else (3)if elif else 语法格式如下: #if 语法格式 if 条件 then 命令1... 命令2... fi #if e ...

  2. springCloud-Hystrix熔断器

    熔断器的原理很简单,如同电力过载保护器.它可以实现快速失败,如果它在一段时间内侦测到许多类似的错误,会强迫其以后的多个调用快速失败,不再访问远程服务器,从而防止应用程序不断地尝试执行可能会失败的操作, ...

  3. 第一次安装Dev-c++编译器如何设置?Dev-c++神奇功能

    安装完Dev-c++后,我们通常会根据自己的喜好调整设置,以下是个人的做法,欢迎参考. 1.字体 字体在安装界面就可以更改.默认字体是consolas,个人喜欢下面的courier new 有些字体很 ...

  4. Python可修改和不可修改类型变量(mutuable and immutuable)

    通俗的讲,可修改可以理解为可以在数据所在内存地址直接修改,而不可修改则意味着一旦修改便是创建新的数据对象,而不是在原来的对象内存地址修改 1,Mutuable object [sourcecode l ...

  5. redis集群搭建及一些问题

    redis 1.简化版redis (本套Redis集群为简化版安装部署,只需解压至普通用户家目录下或者任意目录,解压后修改脚本,执行脚本后即可使用.) 注意,此版本需要在redis配置文件中添加 pr ...

  6. 怎样初始化XMLHttpRequest实例对象xhr

    xhr.open() 接收5个参数, 用于初始化一个http请求, 它接收5个参数: 1. method: 请求类型; 2. url: 请求的url; 3. async: 是否为异步, 默认为true ...

  7. element-ui 中 table 鼠标悬停时背景颜色修改

    样式穿透: /deep/ .el-table tbody tr:hover>td { background-color: #颜色 }

  8. connect() failed (111: Connection refused) while connecting to upstream的解决

    遇到这种情况, 首先 1.检查php-fpm是否启动---------如果没启动->启动, 2.用命令 netstat -ant | grep 9000 查看php-fpm进程,如果没启动-&g ...

  9. SIP中第三方呼叫控制(3PCC)建立流程

    1.引言 在传统的电话网环境中,第三方呼叫控制允许一个实体(这里称为控制器- controller) 建立并管理另外的两方或多方之间的通信关系,而其本身并不参与通信. 第三方呼叫控制经常用于运营商业务 ...

  10. C# 关键字 virtual、override和new的用法

    代码如下: class A { public void foo() { Console.WriteLine("A::foo()"); } public virtual void b ...