Android:如何在变量中添加 5 次并获得它们的总秒数

Android : how can I add 5 Times in a variable and get total seconds of them

like i have 5 Times

1. 05:12:02
2. 19:12:52
3. 40:12:14
4. 56:54:10
5. 41:12:12
-----------
Total Seconds : 0#####..`
-----------

我想要这样,请问有什么办法吗,求助。

我可以用这个吗? :

 public String addTime(int hour, int minute, int minutesToAdd) {
    Calendar calendar = new GregorianCalendar(1990, 1, 1, hour, minute);
    calendar.add(Calendar.MINUTE, minutesToAdd);
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
    String date = sdf.format(calendar.getTime());
    return date;
}

一种简单的方法,如果格式是您指定的格式,则无需担心转换日期如下:

int totalSum = getSecondsFromDate("05:12:02") + getSecondsFromDate("19:12:52") + getSecondsFromDate("40:12:14") + getSecondsFromDate("56:54:10") + getSecondsFromDate("41:12:12");

private int getSecondsFromDate(String date){
  //We split the date to have hours, minutes and seconds
  String splitDate = date.split(":");
  int hours = Integer.parseInt(splitDate[0]);
  int minutes = Integer.parseInt(splitDate[1]);
  int seconds = Integer.parseInt(splitDate[2]);

  int totalSeconds = (hours*60*60) + (minutes*60) + seconds;
  return totalSeconds;
}

使用 java.time 中的 Duration class(现代 Java 日期和时间 API):

    String[] times = {
            "05:12:02",
            "19:12:52",
            "40:12:14",
            "56:54:10",
            "41:12:12"
    };
    Duration timeSum = Duration.ZERO;
    for (String time : times) {
        // reformat to ISO 8601
        time = time.replaceFirst("(\d{2}):(\d{2}):(\d{2})", "PTHMS");
        // add
        timeSum = timeSum.plus(Duration.parse(time));
    }
    System.out.println("Total seconds: " + timeSum.getSeconds());

输出:

Total seconds: 585810

Durationclass不能直接解析你的时间字符串。它解析 ISO 8601 标准格式,因此我使用正则表达式将 05:12:02 转换为 PT05H12M02S。然后我将其输入 Duration.parse。您可以将 ISO 8601 字符串读作“05 小时 12 分 02 秒的时间段”。

类 表示日期和时间——DateCalendarLocalTime 等——不适用于时间量。 DateCalendar 也早已过时且设计不佳,所以不要尝试这些。虽然不是不可能通过,但也有一些陷阱,即使你成功了,也很难阅读代码并说服自己是正确的。

问题:我可以在 Android 上使用 java.time 吗?

是的,java.time 在新旧 Android 设备上都能很好地工作。只需要至少 Java 6.

  • 在 Java 8 和更高版本以及较新的 Android 设备上(据我所知,来自 API 级别 26)现代 API 是内置的。
  • 在 Java 6 和 7 中获取 ThreeTen Backport,新 classes 的 backport(ThreeTen 用于 JSR 310;请参阅底部的链接)。上面的代码是 运行 开发的 org.threeten.bp.Duration 来自 backport。
  • 在(较旧的)Android 使用 ThreeTen Backport 的 Android 版本。它叫做 ThreeTenABP。并确保使用子包从 org.threeten.bp 导入日期和时间 classes。

链接