【问题标题】:How to return sum of LocalTime in Java如何在 Java 中返回 LocalTime 的总和
【发布时间】:2020-08-01 22:01:10
【问题描述】:

它不会得到分钟。我需要返回分钟。 如何在 Java 中迭代 Localtime 时返回分钟总和?

public String userLunchHoursSum(String username) {
    List<WorkHour> workHours = workHourRepository.findWorkHoursByUsername(username);
    System.out.println(Arrays.toString(workHours.toArray()));
    long diff = 0;
    LocalTime lunchTime;
    long minutes = 0;
    LocalTime plusMinutes = null;
    for (WorkHour workHour : workHours) {
        lunchTime = workHour.getLunch_time().toLocalTime(); //00:30:00
        plusMinutes = lunchTime.plusMinutes(lunchTime.getMinute());
    }
    if(workHours.size()!= 0) {
        return Long.toString(plusMinutes.getMinute());
    }
    return "00:00";
}

getLunch_time 返回java.sql.Time

【问题讨论】:

  • 一小时只有六十分钟。我很确定你想要a Duration or a Period。基本上,LocalTime 是即时的。不是持续时间或期间。
  • 它应该是什么样子?
  • 这取决于您期望的结果。点击我已经提供的链接。这是 Java 教程,应该回答你的问题。
  • 那我应该用什么?
  • 在我看来,您想要某人在午餐时的总时间。对我来说,这听起来像是Duration。我不想重复这个,但你真的应该阅读我提供的链接。

标签: java time localtime


【解决方案1】:

如前所述,您应该存储持续时间而不是本地时间。如果这是您无法控制的,请考虑迁移数据库或创建中间解析函数。我没有运行的示例代码,因为我不知道WorkHour 中的内容。

// leave the string formatting to other functions
public long userLunchHoursSum(String username) {
    List<WorkHour> workHours = workHourRepository.findWorkHoursByUsername(username);
    Duration totalDuration = Duration.ZERO;
    for (WorkHour workHour : workHours) {
        // save your time in the appropriate format beforehand
        // do not use local time to store duration.
        Duration lunchTime = Duration.between(LocalTime.MIDNIGHT, workHour.getLunch_time().toLocalTime()); //00:30:00
        totalDuration = totalDuration.plus(lunchTime);
    }
    return totalDuration.toMinutes();
}

【讨论】:

  • getLunch_time 是 java.sql.Time;
  • plusMinutes() 需要很长但提供了 Duration
  • @anduplats 如果它解决了您的问题,请接受答案。
  • 这并没有解决 OP 的基本问题,即使用错误的类型并通过混合过时的和现代的类使事情进一步复杂化。假设 OP 无法更改 WorkHour 类使用的类型(设计不佳且早已过时的 java.sql.Time),这大约是我们能做的最好的事情,所以从这个意义上说,这是一个很好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-21
  • 2016-05-01
  • 2013-01-01
相关资源
最近更新 更多