如何将 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 类。