在 java 或 joda time 中使用格式化字符串添加分钟

adding minutes using a formatted string in java or joda time

我正在尝试将以分钟为单位的时间字符串表示形式 (4:30) 添加到另一个字符串 (10:00:00),就像您所说的“十点加 4 分钟 30 秒” .

如果我听起来有点冗长,那是因为我花了 7 个小时在网上搜索答案,并不断了解如何将偶数分钟的固定字符串转换为 date/time。

我尝试使用 joda time 但不知道如何将 4:30 变成一个整数(我可以让它与'04'一起使用)。这些时间是来自变量的代码中的字符串,而不是用户在命令行中输入的内容。 我正在使用 JDK 1.7 和 netbeans 8.

Java 8 次 API

您可以利用 Java 8 的新时间 API,它类似于 JodaTime

你首先需要的是 Duration,比如...

Duration d = Duration.parse("PT0H4M30S");

Duration d = Duration.ofMinutes(4).plusSeconds(30);

接下来,您需要生成一个LocalTime

LocalTime time = LocalTime.parse("10:00:00", DateTimeFormatter.ofPattern("HH:mm:ss"));

然后你可以简单地添加 Duration 到它

time = time.plus(d);

这将导致值为

10:04:30

困难的部分是从 String 获取持续时间的值,但如果你能保证格式,你可以简单地使用 String#split

JodaTime

JodaTime 会使它稍微容易一些,例如,您可以使用类似...

的方法将 4:30 解析为 Period
PeriodFormatter formatter = new PeriodFormatterBuilder()
        .appendMinutes().appendSuffix(":")
        .appendSeconds()
        .toFormatter();
Period p = formatter.parsePeriod("4:30");

然后您可以简单地将 10:00:00 解析为 LocalTime 并添加 Period

LocalTime lt = LocalTime.parse("10:00:00", DateTimeFormat.forPattern("HH:mm:ss"));
lt = lt.plus(p);
System.out.println(lt);

输出...

10:04:30.000