gpt4 book ai didi

java - 两个 Java Date 对象之间的小时+分钟

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:13:34 24 4
gpt4 key购买 nike

我找到了如何获取两个日期之间的小时数和分钟数。我想要的是两者之间的确切区别,这是我正在使用的代码:

private String getHours(Message punch) {
LocalTime out = Instant.ofEpochMilli(message.getOut().getTime()).atZone(ZoneId.of(message.getTimezone()))
.toLocalTime();
LocalTime in = Instant.ofEpochMilli(message.getIn().getTime()).atZone(ZoneId.of(message.getTimezone()))
.toLocalTime();
Duration duration = Duration.between(in, out);
Long hours = duration.toHours();
Long minutes = duration.toMinutes() - (hours * Constants.MINUTES_IN_AN_HOUR);
return String.format("%d:%d", hours, minutes);

}

它适用于大多数情况,但在以下情况下我遇到了错误:

  • message.getIn() 返回:12:59
  • message.getOut() 返回:22:00

两者都是同一天,我期望的差异是 9:01,但我得到的是 -14:-59

调试代码我发现 out 是 04:00,in 是 18:59。

对于几乎所有情况,它都运行良好,但在某些情况下会发生。

最佳答案

我认为您的问题是您正在使用 LocalTime 类,但您应该使用 LocalDateTime 类。看来您的时区是格林威治标准时间 + 6,因此在您的示例中,您的入场时间和出场时间落在不同的日子 - 前一天晚上的入场时间和第二天早上的出场时间。但是因为您使用的是 LocalTime,所以您失去了这些是不同日期的时间这一事实。将您的 LocalTime 更改为 LocalDateTime 并查看是否有帮助

关于java - 两个 Java Date 对象之间的小时+分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40112594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com