LocalDate、LocalDateTime计算时间差 您所在的位置:网站首页 date转换为localdatetime LocalDate、LocalDateTime计算时间差

LocalDate、LocalDateTime计算时间差

2022-05-18 09:11| 来源: 网络整理| 查看: 265

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()



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有