2016-04-20 11 views
0

У меня есть некоторая строка времени, которая должна использоваться в seekTo() методе MediaPlayer, но это как этот формат 0:01.432.Преобразование строки времени в миллисекунды

Теперь, как я могу преобразовать его в миллисекунды?

+0

что это значит ? это 1 мин 432 с или 1 сек, 432 миллисекунды? –

+0

@ZahidulIslam 1 сек, 432 миллисекунды – Mohammad7G

+0

Разделите строку на ':' Затем удалите '.' из второй части строки и преобразуйте ее в Integer. это миллисекунды. 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; 
} 

и ИНТ к тексту

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 да .. –

+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

Смежные вопросы