如果已經討論過,請致歉。將持續時間字符串轉換爲以毫秒爲單位的Java
我有一個夾子持續時間的字符串:
00:10:17
我想將其轉換成值以毫秒爲單位。 (對於上面的字符串基本上是617000)
是否有一些API可用於在一個或兩個步驟中完成此操作。 基本的方法是分割字符串,然後添加分鐘,秒和小時。
但是有沒有更簡單的方法來做到這一點?
謝謝。
如果已經討論過,請致歉。將持續時間字符串轉換爲以毫秒爲單位的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