У меня есть некоторая строка времени, которая должна использоваться в seekTo()
методе MediaPlayer
, но это как этот формат 0:01.432
.Преобразование строки времени в миллисекунды
Теперь, как я могу преобразовать его в миллисекунды?
У меня есть некоторая строка времени, которая должна использоваться в seekTo()
методе MediaPlayer
, но это как этот формат 0:01.432
.Преобразование строки времени в миллисекунды
Теперь, как я могу преобразовать его в миллисекунды?
Я создал эти два метода для преобразования текста в 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;
}
С 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);
Могу я попросить вас объяснить больше? – Mohammad7G
@ Mohammad7G да .. –
Этот код не возвращает миллисекунды. – Mohammad7G
Немного Длинный метод, но вы можете попробовать это, и это, вероятно, следует работать:
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: 01.432», а не «0: 01: 432». он начинается с минут. – Mohammad7G
Проверьте мой отредактированный ответ – Aamir
что это значит ? это 1 мин 432 с или 1 сек, 432 миллисекунды? –
@ZahidulIslam 1 сек, 432 миллисекунды – Mohammad7G
Разделите строку на ':' Затем удалите '.' из второй части строки и преобразуйте ее в Integer. это миллисекунды. 1432 –