LocalDate、LocalDateTime计算时间差
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计算时间差相关推荐
- LocalDateTime计算时间差
LocalDateTime时间差计算(计算天数) public static void main(String[] args) {DateTimeFormatter df = DateTimeForm ...
- Java 计算时间差
Java 计算时间差 1. Date 计算时间差 2. 两 LocalDate 相差年份,返回Integer类型 3. LocalDateTime 计算时间差 1. Date 计算时间差 import ...
- Java计算时间差、日期差总结(亲测)
Java计算时间差.日期差总结 最近工作中遇到需要计算时间差,搜索了几种计算时间差的方法,这里总结一下 1.java 7中的日历类Calendar Calendar类使用其静态的getInstance ...
- java中Date计算时间差
1.java 7中的日历类Calendar Calendar类使用其静态的getInstance()方法获取一个日历实例,该实例为当前的时间:如果想改变时间,可以通过其setTime方法传入一个Dat ...
- Java计算时间差、日期差总结
Java计算时间差.日期差总结 最近工作中遇到需要计算时间差,搜索了几种计算时间差的方法,这里总结一下 1.java 7中的日历类Calendar Calendar类使用其静态的getInstance ...
- Java计算时间差、日期差
在java中,计算时间差或日期差有多种方法,以下提供五种示例: 目录 一.使用 Instant 和 Duration 类计算时间差 二.使用 LocalDate 和 ChronoUnit 类计算日期差 ...
- java 日期calendar_java时间对象Date,Calendar和LocalDate/LocalDateTime
一.简介 Date:java.util.Date包,包含日期,时间,毫秒数. Calendar:java.util.Calendar包,abstract修饰,Date的很多方法已经过时迁移到了Cale ...
- java duration 时间差_java8 计算时间差的方法示例
java8 计算时间差的方法示例 发布于 2020-4-3| 复制链接 摘记: 一.简述 在Java8中,我们可以使用以下类来计算日期时间差异: 1.Period 2.Duration 3.Chron ...
- python计算时间差代码_Python3显示当前时间、计算时间差及时间加减法示例代码...
Python3显示当前时间.计算时间差及时间加减法示例代码 摘要 在使用Python写程序时,经常需要输出系统的当前时间以及计算两个时间之间的差值,或者将当前时间加减一定时间(天数.小时.分钟.秒)来 ...
最新文章
- python怎么建立画板_Python基于opencv实现的简单画板功能示例
- python之父-Python之父宣布退休,但Python仍在吞噬世界
- 二叉查找树 Java实现
- pde lec 6 part 2
- 【iVX 初级工程师培训教程 10篇文拿证】06 数据库及服务
- 关于压缩工具 7z(7-zip) 的选项 -so(从标准输出流写入数据)的解读
- LeetCode 2157. 字符串分组(状态压缩+位运算+图的遍历)
- 论文浅尝 | 为基于知识库的问答构建形式查询生成
- css基础--正文颜色和背景
- LayaAir graphics 矢量绘图之 圆形与扇形
- 网络数据库的复制和同步(一)
- css 页面机械/数字电子 字体怎么实现?
- 2021-CSP-J2/S2 自我题解
- Nacos 一致性协议:Distro协议
- python用turtle画四叶草_pythonturtle工具绘制四叶草的实例分享 | 学步园
- UnityAction和System.Action引发的思考
- java append()_append()方法的坑
- [SystemVerilog] 基于 FPGA 的数字钟设计
- 不入门级代码教程(仅供参考)
- 判断N!末尾有多少个0
热门文章
- 网络安全kali渗透学习 web渗透入门 使用msf扫描靶机上mysql服务的空密码
- Caching best practices max-age
- Unity打包apk后,应用icon是安卓小机器人
- ObjectArx自定义实体入门(C++)及注意事项
- ASP.NET 2.0 本地化技术之研究
- golang中slice切片使用的误区
- 衡量电子计算机性能指标是,衡量计算机的性能指标有
- Android App Bundle 和Unity AAB BundleTools
- Office 365小型企业版同时安装 Office Project 2016 教程
- 关于投资有哪些不得不读的书籍?