LocalDateTime计算天数和时间差

LocalDateTime now = LocalDateTime.parse("2021-12-21 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDateTime end = LocalDateTime.parse("2022-03-21 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
long until = now.until(end, ChronoUnit.DAYS);//1.相差的天数
Duration duration = Duration.between(now,end);
long days = duration.toDays(); //2.相差的天数
System.out.println(days);

以下是Jdk1.7存在的问题以及Jdk1.8新特性
Jdk1.7的问题
  在Jdk1.8版本发布了新的Date-Time API来加强对时间、日期的处理。这是因为在Jdk1.7中时间、日期的处理上存在如下的一些问题。

非线程安全。Date类是非线程安全的,这是Java时间日期类中最大的问题。
设计很差。①在java.util包和java.sql包下都有时间日期类Date,java.util.Date同时包含时间和日期,而java.sql.Date只包含日期,在不同的包设计了相似的功能,而且这两个类具有相同名字,这是一种非常糟糕的设计;
②Date类在java.util包下,而Date类的格式化和解析类SimpleDateFormat在java.text包下;
③日期类不提供国际化,没有时区支持。
Jdk1.8新提供的API
  为了解决上面的问题,Jdk1.8在java.time包下提供了很多新的API。新的java.time包涵盖了所有处理日期、时间、时区、时刻(instants)、过程(during)与时钟的操作。比较重要的两个API:Local(本地)和Zoned(时区)。Local简化了时间、日期的处理,没有时区问题,Zoned通过制定的时区处理时间日期。我们在处理时间、日期的时候会常用的3个类,LocalDate、LocalTime、LocalDateTime,这三个类都是final类。这三个类的使用方法差不多,看懂一个类的使用,其他的两个类和这个类的使用差不多。

LocalDate、LocalTime、LocalDateTime
创建对象
静态方法now()
  在创建LocalDateTime、LocalDate、LocalTime对象的时候,推荐使用实例方法.now()来实例化,now()方法是获取当前日期和时间。例如

LocalDateTime currentTime = LocalDateTime.now();
System.out.println(currentTime);
2020-12-23T14:11:53.943

LocalDate的方法


LocalTime的方法

LocalDateTime的方法

实例方法:上面LocalDate、LocalTime提供的get、with、minus、plus、equals、compareTo这些方法在LocalDateTime中都有。
  一般来讲用的比较多的还是LocalDateTime类。

DateTimeFormatter
  用于LocalDateTime、LocalDate、LocalTime和字符串的转换。

字符串→日期时间类

String dateTime = "2021-01-05 12:00:00";
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime ldt = LocalDateTime.parse(dateTime, df);

日期时间类→字符串

LocalDateTime ldt = LocalDateTime.now();
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateTime = ldt.format(df);

Duration
  用于计算两个日期时间类对象的差值

String dateTime1 = "2021-01-05 12:00:00";
String dateTime2 = "2021-01-07 11:00:00";
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime ldt1 = LocalDateTime.parse(dateTime1, df);
LocalDateTime ldt2 = LocalDateTime.parse(dateTime2, df);
System.out.println(ldt1.format(df));
System.out.println(ldt2.format(df));
Duration duration = Duration.between(ldt1, ldt2);
Long days = duration.toDays();
System.out.println(days);

除了转换成天数的方法还有转换小时、分钟等等的方法。

小结
获取当前时间:LocalDateTime.now()
自定义时间:LocalDateTime.of(参数列表)
获取LocalDateTime对象的时间数据:get方法
修改LocalDateTime对象的时间数据:with方法
时间的相加:plus方法
时间的相减:minus方法
判断时间相等:equals方法
判断当前时间是否在某个时间之前:isBefor(LocalDateTime other)
判断当前时间是否在某个时间之后:isAfter(LocalDateTime other)
时间转换成字符串:toString()
字符串转换成时间:parse()

LocalDate、LocalDateTime计算时间差相关推荐

  1. LocalDateTime计算时间差

    LocalDateTime时间差计算(计算天数) public static void main(String[] args) {DateTimeFormatter df = DateTimeForm ...

  2. Java 计算时间差

    Java 计算时间差 1. Date 计算时间差 2. 两 LocalDate 相差年份,返回Integer类型 3. LocalDateTime 计算时间差 1. Date 计算时间差 import ...

  3. Java计算时间差、日期差总结(亲测)

    Java计算时间差.日期差总结 最近工作中遇到需要计算时间差,搜索了几种计算时间差的方法,这里总结一下 1.java 7中的日历类Calendar Calendar类使用其静态的getInstance ...

  4. java中Date计算时间差

    1.java 7中的日历类Calendar Calendar类使用其静态的getInstance()方法获取一个日历实例,该实例为当前的时间:如果想改变时间,可以通过其setTime方法传入一个Dat ...

  5. Java计算时间差、日期差总结

    Java计算时间差.日期差总结 最近工作中遇到需要计算时间差,搜索了几种计算时间差的方法,这里总结一下 1.java 7中的日历类Calendar Calendar类使用其静态的getInstance ...

  6. Java计算时间差、日期差

    在java中,计算时间差或日期差有多种方法,以下提供五种示例: 目录 一.使用 Instant 和 Duration 类计算时间差 二.使用 LocalDate 和 ChronoUnit 类计算日期差 ...

  7. java 日期calendar_java时间对象Date,Calendar和LocalDate/LocalDateTime

    一.简介 Date:java.util.Date包,包含日期,时间,毫秒数. Calendar:java.util.Calendar包,abstract修饰,Date的很多方法已经过时迁移到了Cale ...

  8. java duration 时间差_java8 计算时间差的方法示例

    java8 计算时间差的方法示例 发布于 2020-4-3| 复制链接 摘记: 一.简述 在Java8中,我们可以使用以下类来计算日期时间差异: 1.Period 2.Duration 3.Chron ...

  9. python计算时间差代码_Python3显示当前时间、计算时间差及时间加减法示例代码...

    Python3显示当前时间.计算时间差及时间加减法示例代码 摘要 在使用Python写程序时,经常需要输出系统的当前时间以及计算两个时间之间的差值,或者将当前时间加减一定时间(天数.小时.分钟.秒)来 ...

最新文章

  1. python怎么建立画板_Python基于opencv实现的简单画板功能示例
  2. python之父-Python之父宣布退休,但Python仍在吞噬世界
  3. 二叉查找树 Java实现
  4. pde lec 6 part 2
  5. 【iVX 初级工程师培训教程 10篇文拿证】06 数据库及服务
  6. 关于压缩工具 7z(7-zip) 的选项 -so(从标准输出流写入数据)的解读
  7. LeetCode 2157. 字符串分组(状态压缩+位运算+图的遍历)
  8. 论文浅尝 | 为基于知识库的问答构建形式查询生成
  9. css基础--正文颜色和背景
  10. LayaAir graphics 矢量绘图之 圆形与扇形
  11. 网络数据库的复制和同步(一)
  12. css 页面机械/数字电子 字体怎么实现?
  13. 2021-CSP-J2/S2 自我题解
  14. Nacos 一致性协议:Distro协议
  15. python用turtle画四叶草_pythonturtle工具绘制四叶草的实例分享 | 学步园
  16. UnityAction和System.Action引发的思考
  17. java append()_append()方法的坑
  18. [SystemVerilog] 基于 FPGA 的数字钟设计
  19. 不入门级代码教程(仅供参考)
  20. 判断N!末尾有多少个0

热门文章

  1. 网络安全kali渗透学习 web渗透入门 使用msf扫描靶机上mysql服务的空密码
  2. Caching best practices max-age
  3. Unity打包apk后,应用icon是安卓小机器人
  4. ObjectArx自定义实体入门(C++)及注意事项
  5. ASP.NET 2.0 本地化技术之研究
  6. golang中slice切片使用的误区
  7. 衡量电子计算机性能指标是,衡量计算机的性能指标有
  8. Android App Bundle 和Unity AAB BundleTools
  9. Office 365小型企业版同时安装 Office Project 2016 教程
  10. 关于投资有哪些不得不读的书籍?