2016-04-20 78 views
0

我有一些字符串時間必須在類的seekTo()方法中使用,但它們的格式爲0:01.432將字符串時間轉換爲毫秒

現在我怎麼能把它轉換爲毫秒?

+0

這是什麼意思 ?是1分432秒還是1秒,432毫秒? –

+0

@ZahidulIslam 1秒,432毫秒 – Mohammad7G

+0

將字符串拆分爲':'然後從字符串的第二部分刪除'.'並將其轉換爲整數。那就是毫秒。 1432 –

回答

2

我創建了這兩種方法,將文本轉換成int

private static int convert(String time) { 
    int quoteInd = time.indexOf(":"); 
    int pointInd = time.indexOf("."); 

    int min = Integer.valueOf(time.substring(0, quoteInd)); 
    int sec = Integer.valueOf(time.substring(++quoteInd, pointInd)); 
    int mil = Integer.valueOf(time.substring(++pointInd, time.length())); 

    return (((min * 60) + sec) * 1000) + mil; 
} 

和int文本

private static String convert(final int duration) { 
    int dur, min, sec, mil; 

    dur = duration; 
    min = dur/60000; 
    dur -= min * 60000; 
    sec = dur/1000; 
    dur -= sec * 1000; 
    mil = dur; 

    return min + ":" + sec + "." + mil; 
} 
0

由於1.5存在java.util.concurrent.TimeUnit類,像...

String.format("%d min, %d sec", 
TimeUnit.MILLISECONDS.toMinutes(millis), 
TimeUnit.MILLISECONDS.toSeconds(millis) - 
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)) 
); 

如果你想爲值0-9,就像添加一個前導零...

String.format("%02d min, %02d sec", 
TimeUnit.MILLISECONDS.toMinutes(millis), 
TimeUnit.MILLISECONDS.toSeconds(millis) - 
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)) 
); 

對於Java版本低於1.5或對於不完全支持TimeUnit類的系統,例如...

int seconds = (int) (milliseconds/1000) % 60 ; 
int minutes = (int) ((milliseconds/(1000*60)) % 60); 
int hours = (int) ((milliseconds/(1000*60*60)) % 24); 
+0

我可以問你更多解釋嗎? – Mohammad7G

+0

@ Mohammad7G yes .. –

+0

此代碼不返回毫秒。 – Mohammad7G

0

有點長的方法,但你可以試試這個,它可能應該工作:

String time = "0:01.432"; 
    String[] time1 = time.split(":"); 
    String Minutes = time1[0]; //You get your Minutes here 
    long min = Integer.parseInt(Minutes); //Converting into Integer 

    String Sec_mSec=time1[1]; //Seconds & MilliSeconds 
    String[] time2 =Sec_mSec.split("."); //Splitting Both 

    String Seconds = time2[0]; //You get your Seconds here 

    long sec = Integer.parseInt(Seconds); //Converting into Integer 
    String mSeconds = time2[1]; //You get your Milli Seconds here 
    long t = (min * 60) + sec; 
    long result = TimeUnit.SECONDS.toMillis(t); //Minutes and Seconds in Millis 
    long msec = Integer.parseInt(mSeconds); //Converting into Integer 

    long f_result=result+msec //Final Result 
+0

感謝您的幫助,但時間就像「0:01.432」而不是「0:01:432」。它從分鐘開始。 – Mohammad7G

+0

查看我已編輯的答案 – Aamir

相關問題