java - 如何在Java中返回LocalTime的总和

标签 java time localtime

它不会得到 session 记录。我需要返回分钟数。 如何在 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

最佳答案

如上所述,您应该存储持续时间而不是本地时间。如果这是您无法控制的,请考虑迁移数据库或创建中间解析函数。我还没有运行示例代码,因为我不知道 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();
}

关于java - 如何在Java中返回LocalTime的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61304875/

相关文章:

java - 它说必须调用looper.prepare

c# - 两次之间经过的小时数,与国家和时区无关

date - 如何在groovy中从当前日期添加年份或月份?

c# - DateTime 到 LocalDate (NodaTime)

linux - 为什么命令 'date -u' 命令 'date' 的结果比 linux(centos 5.1)中 25 秒的结果快?

java - 支持 Java 迭代的线程安全排序集合

java - Java代码转换为C -> 通过JNI调用 -> 程序停止运行

cocoa - 确定 cocoa 中的毫秒时间间隔

c++ - 使用 ctime 将给定日期提前到下一个日历日期的问题

Java 应用程序。表达式中未定义函数 'replace'