如何将 DurationFormatUtils 转换回毫秒
How to Convert DurationFormatUtils back to Milliseconds
目前我一直在使用 DurationFormatUtils 将曲目中的 Millis 转换为 HH:mm:ss,但我希望允许用户使用这种格式搜索曲目,例如他们会输入:
'-seek HH:mm:ss 或 mm:ss',我想将该时间转换回毫秒...是否有任何内置的 Java 方法来执行此操作?还是我必须创建自己的方法来转换它?
你可以这样做。
首先,定义一个DateTimeFormatter
实例。
DateTimeFormatter dtf =
DateTimeFormatter.ofPattern("H:mm:ss");
H
- 24 小时制的一位或两位数
mm
- 分钟
ss
- 秒
要处理缺少的时间,您可以检查从第 3 个字符开始是否存在冒号。如果是,则可以按原样解析时间,否则,在前面加上 00
小时。我选择把它放在 lambda 中。
Function<String,String> adjust = time -> time.indexOf(":",3) >= 0
? time : "00:"+time;
把它们放在一起。
String[] times = { "3:49:44", "12:30" };
for (String time : times) {
int millis = dtf.parse(adjust.apply(time))
.get(ChronoField.MILLI_OF_DAY);
System.out.println(millis);
}
打印
13784000
750000
查看 java.time 包了解更多 date/time 类。
目前我一直在使用 DurationFormatUtils 将曲目中的 Millis 转换为 HH:mm:ss,但我希望允许用户使用这种格式搜索曲目,例如他们会输入: '-seek HH:mm:ss 或 mm:ss',我想将该时间转换回毫秒...是否有任何内置的 Java 方法来执行此操作?还是我必须创建自己的方法来转换它?
你可以这样做。
首先,定义一个DateTimeFormatter
实例。
DateTimeFormatter dtf =
DateTimeFormatter.ofPattern("H:mm:ss");
H
- 24 小时制的一位或两位数mm
- 分钟ss
- 秒
要处理缺少的时间,您可以检查从第 3 个字符开始是否存在冒号。如果是,则可以按原样解析时间,否则,在前面加上 00
小时。我选择把它放在 lambda 中。
Function<String,String> adjust = time -> time.indexOf(":",3) >= 0
? time : "00:"+time;
把它们放在一起。
String[] times = { "3:49:44", "12:30" };
for (String time : times) {
int millis = dtf.parse(adjust.apply(time))
.get(ChronoField.MILLI_OF_DAY);
System.out.println(millis);
}
打印
13784000
750000
查看 java.time 包了解更多 date/time 类。