将持续时间字符串转换为以毫秒为单位的Java
如果已经讨论过,请致歉。将持续时间字符串转换为以毫秒为单位的Java
我有一个夹子持续时间的字符串:
00:10:17
我想将其转换成值以毫秒为单位。 (对于上面的字符串基本上是617000)
是否有一些API可用于在一个或两个步骤中完成此操作。 基本的方法是分割字符串,然后添加分钟,秒和小时。
但是有没有更简单的方法来做到这一点?
谢谢。
这是一个自己写的可能的方法(同样源格式的假设总是)
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;
@Sunny谢谢接受(但assylias的答案有更清晰的解决方案,所以使用assylias的解决方案。 – Sajmon 2013-03-14 13:46:55
创建一个合适的DateFormat
实例。使用parse()
方法获得Date
。在Date
对象上使用getTime()
可以获得毫秒。您可以检查here。
我只是测试它为:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class Test {
public static void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String inputString = "00:10:17";
Date date = sdf .parse(inputString);// .parse("1970-01-01" + inputString);
System.out.println("in milliseconds: " + date.getTime());
}
}
你可以简单地手动分析它:
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));
java.time.Duration
使用Duration
类。
Duration.between(
LocalTime.MIN ,
LocalTime.parse("00:10:17")
).toMillis()
毫秒:617000
请参阅this Answer of mine和this Answer of mine到类似的问题,以获得更多有关Duration
,LocalTime
和java.time的解释。
注意:在java.time对象从nanoseconds可能值转换为所需milliseconds当可能的数据丢失的当心。
日期在哪里? – 2013-03-14 13:25:17
没有日期,只是持续时间在HH:MM:SS – Sunny 2013-03-14 13:26:09
类似的问题:[Java:如何将字符串(HH:MM:SS)转换为持续时间?](http://stackoverflow.com/q/8257641/642706 ) – 2017-01-03 22:05:39