Как вернуть сумму LocalTime в Java - PullRequest
0 голосов
/ 19 апреля 2020

Это не получит минут. мне нужно вернуть минут. Как вернуть сумму минут при итерации по местному времени в Java?

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.

1 Ответ

1 голос
/ 19 апреля 2020

Как уже упоминалось, вы должны хранить продолжительность вместо местного времени. Если это то, что вы не можете контролировать, подумайте о переносе базы данных или создании промежуточной функции синтаксического анализа. Пример кода, который я не запустил, потому что я не знаю, что в 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();
}
...