栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java 8:计算两个LocalDateTime之间的差

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 8:计算两个LocalDateTime之间的差

不幸的是,似乎也没有跨时间的周期类,因此你可能必须自己进行计算。

幸运的是,日期和时间类具有许多实用程序方法,可以在某种程度上简化此过程。这是一种计算差异的方法,尽管不一定最快:

LocalDateTime fromDateTime = LocalDateTime.of(1984, 12, 16, 7, 45, 55);LocalDateTime toDateTime = LocalDateTime.of(2014, 9, 10, 6, 40, 45);LocalDateTime tempDateTime = LocalDateTime.from( fromDateTime );long years = tempDateTime.until( toDateTime, ChronoUnit.YEARS );tempDateTime = tempDateTime.plusYears( years );long months = tempDateTime.until( toDateTime, ChronoUnit.MonTHS );tempDateTime = tempDateTime.plusMonths( months );long days = tempDateTime.until( toDateTime, ChronoUnit.DAYS );tempDateTime = tempDateTime.plusDays( days );long hours = tempDateTime.until( toDateTime, ChronoUnit.HOURS );tempDateTime = tempDateTime.plusHours( hours );long minutes = tempDateTime.until( toDateTime, ChronoUnit.MINUTES );tempDateTime = tempDateTime.plusMinutes( minutes );long seconds = tempDateTime.until( toDateTime, ChronoUnit.SEConDS );System.out.println( years + " years " +         months + " months " +         days + " days " +        hours + " hours " +        minutes + " minutes " +        seconds + " seconds.");//prints: 29 years 8 months 24 days 22 hours 54 minutes 50 seconds.

基本思想是:创建一个临时的开始日期并获得整年的结束时间。然后,根据年数调整该日期,以使开始日期小于结束日期。对每个时间单位以降序重复该操作。

最后免责声明:我没有考虑不同的时区(两个日期都应该在同一时区中),也没有测试/检查夏令时或日历中的其他更改(例如萨摩亚中的时区更改)影响此计算。因此,请谨慎使用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414868.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号