在Java中将持续时间字符串转换为毫秒

Sun*_*nny 2 java duration

如果已经讨论过,我道歉.

我在字符串中有一个剪辑持续时间:

00:10:17
Run Code Online (Sandbox Code Playgroud)

我想将其转换为以毫秒为单位的值.(上述字符串基本上为617000)

是否有一些API,我可以用一步或两步来做到这一点.基本方法是拆分字符串,然后添加分钟,秒和小时.

但有没有更短的方法来做到这一点?

谢谢.

ass*_*ias 8

您可以手动解析它:

String s = "00:10:17";
String[] data = s.split(":");

int hours  = Integer.parseInt(data[0]);
int minutes = Integer.parseInt(data[1]);
int seconds = Integer.parseInt(data[2]);

int time = seconds + 60 * minutes + 3600 * hours;
System.out.println("time in millis = " + TimeUnit.MILLISECONDS.convert(time, TimeUnit.SECONDS));
Run Code Online (Sandbox Code Playgroud)


Sim*_*iak 5

这是一种自己书面的可能方法(始终假定相同的源格式)

String source = "00:10:17";
String[] tokens = source.split(":");
int secondsToMs = Integer.parseInt(tokens[2]) * 1000;
int minutesToMs = Integer.parseInt(tokens[1]) * 60000;
int hoursToMs = Integer.parseInt(tokens[0]) * 3600000;
long total = secondsToMs + minutesToMs + hoursToMs;
Run Code Online (Sandbox Code Playgroud)


Bas*_*que 5

java.time.Duration

使用Duration该类。

Duration.between( 
    LocalTime.MIN , 
    LocalTime.parse( "00:10:17" ) 
).toMillis()
Run Code Online (Sandbox Code Playgroud)

毫秒:617000

可以在IdeOne.com上实时查看此代码

我这个答案这个答案我的类似问题进行更多的解释DurationLocalTime以及java.time。

注意:当从java.time对象中可能的纳秒值转换为所需的毫秒数时,请注意可能的数据丢失。