2013-03-14 62 views
1

如果已經討論過,請致歉。將持續時間字符串轉換爲以毫秒爲單位的Java

我有一個夾子持續時間的字符串:

00:10:17 

我想將其轉換成值以毫秒爲單位。 (對於上面的字符串基本上是617000)

是否有一些API可用於在一個或兩個步驟中完成此操作。 基本的方法是分割字符串,然後添加分鐘,秒和小時。

但是有沒有更簡單的方法來做到這一點?

謝謝。

+0

日期在哪裏? – 2013-03-14 13:25:17

+0

沒有日期,只是持續時間在HH:MM:SS – Sunny 2013-03-14 13:26:09

+0

類似的問題:[Java:如何將字符串(HH:MM:SS)轉換爲持續時間?](http://stackoverflow.com/q/8257641/642706 ) – 2017-01-03 22:05:39

回答

1

這是一個自己寫的可能的方法(同樣源格式的假設總是)

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; 
+0

@Sunny謝謝接受(但assylias的答案有更清晰的解決方案,所以使用assylias的解決方案。 – Sajmon 2013-03-14 13:46:55

0

檢查出Joda TimeDuration類。

+0

僅供參考,[Joda-Time](http://www.joda.org/joda-time/)項目現在處於[維護模式](https://en.wikipedia.org/wiki/Maintenance_mode),團隊建議遷移到[java.time](http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html)類。 – 2017-01-03 22:41:10

0

創建一個合適的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());   
    } 
} 
+0

我不認爲這會起作用。 – assylias 2013-03-14 13:29:16

+0

是的,它不會工作,因爲它會給以毫秒爲單位的時間直到那個特定的時間 – Sunny 2013-03-14 13:30:18

+0

使它在鏈接中工作的「技巧」是將日期設置爲1970年1月1日。如果你不這樣做,你將得到一個錯誤的結果。 – assylias 2013-03-14 13:31:52

6

你可以簡單地手動分析它:

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)); 
+0

''TimeUnit.MILLISECONDS.convert(time,TimeUnit.SECONDS)+1'assylias);'哇:]我真的不知道這件事。很好的觸摸 – Sajmon 2013-03-14 13:36:41

+1

@Sajmon我本可以用它來計算時間,但是有點懶 - 它被公認是相當詳細的;-) – assylias 2013-03-14 13:37:33

+0

所以很高興知道TimeUnit。我喜歡! – Sajmon 2013-03-14 13:48:18

相關問題