在 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
我正在尝试将以分钟为单位的时间字符串表示形式 (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