如何使用 Java 8 中的 LocalDateTime 计算两个日期之间的时间差?

2024-02-08

给出了很多答案,但我无法找到与我的情况兼容的答案。我还需要找出 8 小时的时间差异以及日期更改。例如,如果时间大于 8 小时,则不要执行某些操作。

我们有没有什么方法可以达到同样的效果LocalDateTime在 Java-8 中?

我尝试使用以下但无法实现相同的目标。

LocalDateTime fromDateTime = LocalDateTime.of(2017, 07, 07, 07, 00, 55);
LocalDateTime toDateTime = LocalDateTime.now();
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("" + java.time.Duration.between(tempDateTime, toDateTime).toHours());

System.out.println(years + " years "
        + months + " months "
        + days + " days "
        + hours + " hours "
        + minutes + " minutes "
        + seconds + " seconds.");

很难分别检查时间和日期。

最初我是这样编码的,但它看起来不正确:

return openBrat!=null 
        && openBrat.until(LocalDateTime.now(), ChronoUnit.DAYS) == 0 &&  
          openBrat.until(LocalDateTime.now(), ChronoUnit.HOURS) >= 8
         && openBrat.until(LocalDateTime.now(), ChronoUnit.Minutes) >= 0;

谁能建议如何减去:

2017 07 06 23:30:00 - 2017 07 07 01:30:00 - Should return 2 hours.

以下打印2,正如您所期望的那样。

LocalDateTime ldt1 = LocalDateTime.of(2017, 07, 06, 23, 30, 00);
LocalDateTime ldt2 = LocalDateTime.of(2017, 07, 07, 1, 30, 00);
System.out.println(Duration.between(ldt1, ldt2).toHours());

你的代码没有任何问题。如果您没有得到预期的结果,您可能需要检查您的预期是否正确。


要在差异小于 8 小时时执行某些操作,您可以执行以下操作:

LocalDateTime ldt1 = LocalDateTime.of(2017, 07, 06, 23, 30, 00);
LocalDateTime ldt2 = LocalDateTime.of(2017, 07, 07, 1, 30, 00);
Duration d1 = Duration.between(ldt1, ldt2);
Duration d2 = Duration.ofHours(8);

if (d1.compareTo(d2) > 0) {
    System.out.println("do nothing");
} else {
    System.out.println("do something");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Java 8 中的 LocalDateTime 计算两个日期之间的时间差? 的相关文章

随机推荐

  • 使用已知和未知字段反序列化 json

    给出以下 json 结果 默认的 json 结果有一组已知的字段 id 7908 name product name 但可以使用其他字段进行扩展 在本例中 unknown field name 1 and unknown field nam
  • jQuery - 选择具有特定样式的子项

    我不知道如何在以下示例中选择第一个跨度 div class sp span abc span span xyz span div 我尝试过使用这个 但没有成功 div sp span visibility hidden not work t
  • 使用 XCode 4.5 运行 iOS 5.1 模拟器时出现问题

    我最近将 XCode 升级到了 4 5 版本 现在当我尝试开发 iOS 5 0 5 1 的应用程序时遇到了问题 我开发了一个简单的 iPad 游戏 用户需要将图像与相应的单词进行匹配 所有这些项目都存储在 UIImageView 中 如果相
  • 适用于 iOS 8 和 iOS 9 的自定义 Unwind Segue

    我的问题是 如何让以下自定义展开转场在 iOS 9 之前版本的设备以及运行 iOS 9 的设备上工作 我有一个显示视图控制器的自定义 Segue 然后有一个相应的自定义展开 Segue 这段代码在 iOS 8 中运行良好 是通过创建 UIS
  • 将 jzy3d.canvas 转换为 awt.component

    我需要将 jzy3d 画布转换为 java awt component 我想使用 JCombobox 和按钮在框架中显示图表 但是当我想将画布转换为组件时 程序被删除 谢谢您的回答 我已经尝试过this https stackoverflo
  • Spring 5 WebFlux 中的缓存

    有没有办法在 Spring 5 中缓存来自 WebClient 的 Flux 我尝试过这个 但没有缓存任何东西 RestController SpringBootApplication EnableCaching public class
  • 如何标记相同的熊猫数据框行?

    我有一个像这样的大熊猫数据框 log apple watermelon orange lemon grapes 1 1 1 yes 0 0 1 2 0 1 0 0 1 True 0 0 0 2 2 0 0 0 0 2 2 1 1 yes 0
  • gcc 对 alloca 的处理是怎么回事?

    在大多数平台上 alloca只是归结为堆栈指针的内联调整 例如 从rsp在 x64 上 加上一些维护堆栈对齐的逻辑 I was looking at the code that gcc generates for alloca and it
  • paypal.HostedFields.isEligible() 始终返回 False :Paypal 借记卡/信用卡付款

    我想在我的网站上添加由 PayPal 提供支持的借记卡 信用卡付款 我正在按照指南进行操作 https developer paypal com docs business checkout advanced card payments h
  • Gdb - 打印数组或数组元素,具有各种大小的元素

    汇编代码 yasm section data src db 1 2 3 的每个元素src数组是1个字节 In GDB 如何打印整个数组或指定索引处的元素 例如打印值为 2 的元素 好的 在 Michael Petch 的许可下 我想自己给出
  • 如何在同一张图片中定位多个物体?

    我是 TensorFlow 的新手 目前 我正在TensorFlow网站上测试一些分类示例 卷积神经网络 它解释了如何将输入图像分类到预定义的类中 但问题是 我不知道如何在相同的图像 例如 我有一个带有猫和狗的输入图像 我希望我的图形在输出
  • 如何找到与输入元素最接近且处于同一级别的标签

    我动态添加input我的表单中的元素 每个逻辑代码块如下所示
  • RuntimeError:切勿在任务 Celery 中调用 result.get()

    我正在使用 celery 将任务发送到远程服务器并尝试返回结果 任务状态不断更新更新状态 http docs celeryproject org en latest reference celery app task html celery
  • 自定义静音/取消静音按钮 Youtube API

    Preface 我想说我已经尽力避免使这个问题成为重复的问题 即自己搜索谷歌 阅读很多其他类似的问题等 我发现了很多真正有用的东西 这些东西使我遇到了这种特定情况我有代码可以展示 所以希望我的最后一个问题能够清晰且可以回答 我有一个使用纯
  • 为什么Sequelize迁移创建表但模型无法连接到数据库

    我正在学习如何在 Nodejs 中使用 Sequelize ORM 并将数据保存在 Postgres 数据库中 我的目标是将用户数据插入Users桌子 我已经使用迁移创建了该表 并且它有效 但是 我无法保存用户数据 例如 我关注了很多资源T
  • Android 后退按钮和进度对话框

    我有一个异步任务在工作时显示进度对话框 它调用在UiThread上运行从内部后台操作显示进度对话框 在运行时我想允许使用后退按钮取消操作 其他人遇到过这个问题 当 ProgressDialog 正在运行时 后退按钮不起作用 https st
  • 授权失败时将用户重定向到特定视图?

    我有以下代码 AcceptVerbs HttpVerbs Post Authorize Roles RoleKeys Administrators public ActionResult Edit int id FormCollection
  • 通过PowerShell创建PEM文件

    我正在尝试编写一个脚本来在 powershell 中创建 PEM 证书文件 我不确定我所做的是否完全错误 但是当我尝试在 socat OPENSSL 中使用 PEM 文件时 它返回了错误 socat OPENSSL LISTEN 1337
  • iPad 上的 iOS (Safari) 中 Web SQL DB 的最大大小是多少?本地存储怎么样?

    使用HTML5的Web SQL在iPad本地存储数据时最大数据大小是多少 当你达到这个值时 它是否只是提示用户增加它 这是一个简单的是 否许可请求吗 如果是这样 硬限制是什么 超出该限制 用户甚至没有允许其扩展的选项 LocalStorag
  • 如何使用 Java 8 中的 LocalDateTime 计算两个日期之间的时间差?

    给出了很多答案 但我无法找到与我的情况兼容的答案 我还需要找出 8 小时的时间差异以及日期更改 例如 如果时间大于 8 小时 则不要执行某些操作 我们有没有什么方法可以达到同样的效果LocalDateTime在 Java 8 中 我尝试使用