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

时间:2016-01-09 01:23:38

标签: java string datetime jodatime

我试图在几分钟(4:30)中将时间字符串表示添加到另一个字符串(10:00:00),就像你要说的那样,时间加上4分钟,30秒。

如果我听起来有点冗长,那是因为我花了7个小时在网上搜索答案,并不断获得如何将固定字符串甚至分钟转换为日期/时间。

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

1 个答案:

答案 0 :(得分:4)

Java 8 Time API

您可以利用Java 8的新Time 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