我试图在几分钟(4:30)中将时间字符串表示添加到另一个字符串(10:00:00),就像你要说的那样,时间加上4分钟,30秒。
如果我听起来有点冗长,那是因为我花了7个小时在网上搜索答案,并不断获得如何将固定字符串甚至分钟转换为日期/时间。
我尝试使用joda时间,但无法弄清楚如何将4:30变成一个整数(我可以使它与' 04'一起使用)。这些时间是变量代码中的字符串,而不是用户在命令行输入的内容。 我使用的是JDK 1.7和netbeans 8。
答案 0 :(得分:4)
您可以利用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会让它更容易一些,例如,您可以使用类似的东西将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