7

Suppose time is given in MM:SS(ex- 02:30) OR HH:MM:SS in String format.how can we convert this time to second.

3

6 Answers 6

20

In your case, using your example you could use something like the following:

String time = "02:30"; //mm:ss String[] units = time.split(":"); //will break the string up into an array int minutes = Integer.parseInt(units[0]); //first element int seconds = Integer.parseInt(units[1]); //second element int duration = 60 * minutes + seconds; //add up our values 

If you want to include hours just modify the code above and multiply hours by 3600 which is the number of seconds in an hour.

Sign up to request clarification or add additional context in comments.

Comments

4
public class TimeToSeconds { // given: mm:ss or hh:mm:ss or hhh:mm:ss, return number of seconds. // bad input throws NumberFormatException. // bad includes: "", null, :50, 5:-4 public static long parseTime(String str) throws NumberFormatException { if (str == null) throw new NumberFormatException("parseTimeString null str"); if (str.isEmpty()) throw new NumberFormatException("parseTimeString empty str"); int h = 0; int m, s; String units[] = str.split(":"); assert (units.length == 2 || units.length == 3); switch (units.length) { case 2: // mm:ss m = Integer.parseInt(units[0]); s = Integer.parseInt(units[1]); break; case 3: // hh:mm:ss h = Integer.parseInt(units[0]); m = Integer.parseInt(units[1]); s = Integer.parseInt(units[2]); break; default: throw new NumberFormatException("parseTimeString failed:" + str); } if (m<0 || m>60 || s<0 || s>60 || h<0) throw new NumberFormatException("parseTimeString range error:" + str); return h * 3600 + m * 60 + s; } // given time string (hours:minutes:seconds, or mm:ss, return number of seconds. public static long parseTimeStringToSeconds(String str) { try { return parseTime(str); } catch (NumberFormatException nfe) { return 0; } } } import org.junit.Test; import static org.junit.Assert.*; public class TimeToSecondsTest { @Test public void parseTimeStringToSeconds() { assertEquals(TimeToSeconds.parseTimeStringToSeconds("1:00"), 60); assertEquals(TimeToSeconds.parseTimeStringToSeconds("00:55"), 55); assertEquals(TimeToSeconds.parseTimeStringToSeconds("5:55"), 5 * 60 + 55); assertEquals(TimeToSeconds.parseTimeStringToSeconds(""), 0); assertEquals(TimeToSeconds.parseTimeStringToSeconds("6:01:05"), 6 * 3600 + 1*60 + 5); } @Test public void parseTime() { // make sure all these tests fail. String fails[] = {null, "", "abc", ":::", "A:B:C", "1:2:3:4", "1:99", "1:99:05", ":50", "-4:32", "-99:-2:4", "2.2:30"}; for (String t: fails) { try { long seconds = TimeToSeconds.parseTime(t); assertFalse("FAIL: Expected failure:"+t+" got "+seconds, true); } catch (NumberFormatException nfe) { assertNotNull(nfe); assertTrue(nfe instanceof NumberFormatException); // expected this nfe. } } } } 

Comments

2
int v = 0; for (var x: t.split(":")) { v = v * 60 + new Byte(x); } 

This snippet should support HH:MM:SS (v would result in seconds) or HH:MM (v would be in minutes)

Comments

1

try this

hours = totalSecs / 3600; minutes = (totalSecs % 3600) / 60; seconds = totalSecs % 60; timeString = String.format("%02d",seconds); 

3 Comments

hi, he already have the hour minutes and seconds(HH:MM:SS ). he want to convert it to milliseconds. first read the question properly. then answer
@Signare He asks "how can we convert this time to second". He does not say millisecond!
minutes = (totalSecs % 3600) / 60; I was struggling minutes part. this line solved my problem. thanks.
0
private static final String TIME_FORMAT = "hh:mm a";//give whatever format you want. //Function calling long timeInMillis = TimeUtils.getCurrentTimeInMillis("04:21 PM"); long seconds = timeInMillis/1000; //Util Function public static long getCurrentTimeInMillis(String time) { SimpleDateFormat sdf = new SimpleDateFormat(TIME_FORMAT, Locale.getDefault()); // sdf.setTimeZone(TimeZone.getTimeZone("GMT")); //getting exact milliseconds at GMT // sdf.setTimeZone(TimeZone.getDefault()); Date date = null; try { date = sdf.parse(time); } catch (ParseException e) { e.printStackTrace(); } return date.getTime(); } 

Comments

0

I have written an extension function in Kotlin for converting String to seconds

fun String?.converTimeToSeconds(): Int { if (this.isNullOrEmpty().not()) { val units = this?.split(":")?.toTypedArray() if (units?.isNotEmpty() == true && units.size >= 3) { val hours = units[0].toInt() val minutes = units[1].toInt() val seconds = units[2].toInt() return (3660 * hours) + (60 * minutes) + seconds } } return 0 

}

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.