java8 time计算时间差

最近使用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
===========

原文地址:https://www.cnblogs.com/fengzhentian/p/12054853.html

时间: 2024-10-06 11:40:19

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

asp.net中C#中计算时间差代码

我用的最简单的办法是 代码如下 复制代码 DateTime dtone = Convert.ToDateTime("2007-1-1 05:32:22");DateTime dtwo = Convert.ToDateTime("2007-1-1 04:20:15");TimeSpan span = dtone.Subtract(dtwo);Response.Write(span.Days + "天" + span.Hours + "小时

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

一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 ). 精确到秒. 测试程序如下: #include <time.h> #include <stdio.h> int main() { time_t start ,end ; double cost; time(&start); sleep(1); time(&en

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

// 此方法适用于所有被创建过的controller,且当前controller生命周期存在,如有错误的地方望大神斧正 //  说一下我们的需求和实现原理,需求:在点击home键退出但没有滑飞它,5分钟之后需要重新登录(其实和平安一账通的登录很像) :实现原理:添加观察者,不用我们手动发送通知,系统会自动发送通知,计算时间差,然后就可以啦?? //  贴代码图片 屏幕快照 2016-09-22 下午2.54.31.png //  我是控制的300s,就是5分钟,超过就弹个框,点击后退出 屏幕快照

计算时间差

一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 ). 精确到秒. 测试程序如下: [c-sharp] view plain copy #include <time.h> #include <stdio.h> int main() { time_t start ,end ; double cost; time(&star

mysql 计算时间差

ROUND(time_to_sec(timediff(m.StartTime, now()))/60) 解析: 比较m.StartTime字段的时间与now()现在的时间差. timediff : 计算时间差 time_to_sec:转化为秒 ROUND :取整

linux获取时间函数及计算时间差

参考:   http://www.cnblogs.com/krythur/archive/2013/02/25/2932647.html 第一章  获取时间函数 1. char * asctime(const struct tm * timeptr); 函数说明 asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回.此函数已经由时区转换成当地时间,字符串格式为:"Wed Jun 30 21:49:08 1993\n&quo

linux内核计算时间差以及jiffies溢出

jiffies是每个时钟中断,都会加1,这就导致一个问题,无论jiffies(一般来说是unsigned long类型)多少个字节,总有溢出的时候. 更极端的时候,当期jiffies是0xffffffff,下一个时刻就是0x0 这样,当你计算延时/时差 的时候0x0 - 0xffffffff结果是 0xffffffff,实际上只是过了一个时钟周期,这种差别是巨大的. 那么如何防止这种情况发生呢? 很简单 假设t1是之前记录的jiffies,t2是当年的jiffies,你想要计算两者差值: (lo

sql server 计算时间差的一部分函数【转】

在做Sql Server开发的时候有时需要获取表中今天.昨天.本周.上周.本月.上月等数据,这时候就需要使用DATEDIFF()函数及GetDate()函数了.DATEDIFF ( datepart , startdate , enddate )释义:计算时间差datepare值:year | quarter | month | week | day | hour | minute | second | millisecondstartdate:开始日期enddate :结束日期GetDate(

php计算时间差/两个时间日期相隔的天数,时,分,秒.

<?php function timediff( $begin_time, $end_time ) { if ( $begin_time < $end_time ) { $starttime = $begin_time; $endtime = $end_time; } else { $starttime = $end_time; $endtime = $begin_time; } $timediff = $endtime - $starttime; $days = intval( $timed