LocalDate、LocalDateTime计算时间差

这篇具有很好参考价值的文章主要介绍了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的方法
LocalDate、LocalDateTime计算时间差
LocalDate、LocalDateTime计算时间差
LocalDate、LocalDateTime计算时间差

LocalTime的方法
LocalDate、LocalDateTime计算时间差

LocalDate、LocalDateTime计算时间差

LocalDateTime的方法
LocalDate、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);

LocalDate、LocalDateTime计算时间差

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

小结
获取当前时间:LocalDateTime.now()
自定义时间:LocalDateTime.of(参数列表)
获取LocalDateTime对象的时间数据:get方法
修改LocalDateTime对象的时间数据:with方法
时间的相加:plus方法
时间的相减:minus方法
判断时间相等:equals方法
判断当前时间是否在某个时间之前:isBefor(LocalDateTime other)
判断当前时间是否在某个时间之后:isAfter(LocalDateTime other)
时间转换成字符串:toString()
字符串转换成时间:parse()文章来源地址https://www.toymoban.com/news/detail-413718.html

到了这里,关于LocalDate、LocalDateTime计算时间差的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java计算Date类时间差

    在Java中,我们可以使用Date类来表示日期和时间。如果我们想要计算两个日期之间的时间差,我们可以使用以下步骤: 创建两个Date对象,表示要比较的两个日期。 使用getTime()方法获取每个Date对象的时间戳。 计算两个时间戳之间的差值,以毫秒为单位。 将毫秒转换为所需的

    2024年02月15日
    浏览(42)
  • mysql 日期 计算 时间差 天数差

    第一种:TIMESTAMPDIFF函数 三个参数。第一个参数是比较的类型: FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY 、 WEEK 、 MONTH 、 QUARTER、 YEAR 几种类型。第二、三参数是时间, 后减前 : 第二种: DATEDIFF函数 两个参数。前减后。得到相差的天数。 NOW() 当前的年月日时分秒,如:2023-03-09

    2024年02月07日
    浏览(57)
  • QML中计算时间差和日期显示格式为00:00:00

    QML中如何计算时间差: 首先需要确定开始时间和结束时间,我们先用当前时间作为开始时间,然后在定时器实时更新结束时间,这样时间差就是动态变化的。 我们以一个时间点为开始时间:startTimer=Qt.formatDateTime(new Date(), \\\"hh:mm:ss\\\"),然后开始定时器。定时器开始后我们需要将得

    2024年02月09日
    浏览(46)
  • Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差(C++)

    Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩

    2024年02月08日
    浏览(59)
  • Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差(C#)

    Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩

    2024年02月09日
    浏览(58)
  • C语言: 两段时间求出时间差

      运行结果:

    2024年02月06日
    浏览(42)
  • 面试算法35:最小时间差

    给定一组范围在00:00至23:59的时间,求任意两个时间之间的最小时间差。例如,输入时间数组[“23:50”,“23:59”,“00:00”],\\\"23:59\\\"和\\\"00:00\\\"之间只有1分钟的间隔,是最小的时间差。 这个题目最直观的解法是求出任意两个时间的间隔,然后比较得出最小的时间差。如

    2024年02月06日
    浏览(46)
  • php怎么实现时间差

    php实现时间差的方法:1、通过strtotime函数将两个日期转换为时间戳;2、通过“$enddate-$startdate”公式将两个时间戳相减;3、将时间差“$diff_seconds”除以86400,并使用“floor()”函数向下舍入为最接近的整数即可获得相差天数。 php怎么实现时间差? php求两个给定日期的时间差:

    2024年02月08日
    浏览(89)
  • mysql怎么求时间差

    1、使用TIMEDIFF()函数 TIMEDIFF(dt1, dt2):计算两个TIME或DATETIME值之间的差值,两个必须为相同类型的参数,即TIME或DATETIME。 TIMEDIFF函数返回表示为时间值的dt1 - dt2的结果,如果任一参数为NULL,TIMEDIFF函数将返回NULL 2、使用IMESTAMPDIFF()函数 TIMESTAMPDIFF(unit,begin,end):计算两个DATE或DAT

    2024年02月13日
    浏览(42)
  • 解决时间差太大导致Windows无法同步时间

    按微软文档进入注册表修改: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig MaxPosPhaseCorrection和MaxNegPhaseCorrection为:0xffffffff (8个F) 但是发现W32TimeConfig里面是空的,而且无法创建 查看config目录权限,发现权限丢失,重新继承权限后修改成功。 另外设置同步时间间隔

    2024年02月16日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包