Converter handles HH:MM and MM:SS

This commit is contained in:
Nathan Mascitelli 2019-02-12 17:32:58 -05:00
parent 96b0336b2c
commit d0f617880c
2 changed files with 22 additions and 15 deletions

View File

@ -17,8 +17,8 @@ public class ConverterTest extends AndroidTestCase {
public void testGetDurationStringShort() throws Exception {
String expected = "13:05";
int input = 785000;
assertEquals(expected, Converter.getDurationStringShort(input));
assertEquals(expected, Converter.getDurationStringShort(47110000, true));
assertEquals(expected, Converter.getDurationStringShort(785000, false));
}
public void testDurationStringLongToMs() throws Exception {
@ -29,7 +29,7 @@ public class ConverterTest extends AndroidTestCase {
public void testDurationStringShortToMs() throws Exception {
String input = "8:30";
long expected = 510000;
assertEquals(expected, Converter.durationStringShortToMs(input));
assertEquals(30600000, Converter.durationStringShortToMs(input, true));
assertEquals(510000, Converter.durationStringShortToMs(input, false));
}
}

View File

@ -74,13 +74,14 @@ public final class Converter {
return String.format(Locale.getDefault(), "%02d:%02d:%02d", h, m, s);
}
/** Converts milliseconds to a string containing hours and minutes */
public static String getDurationStringShort(int duration) {
int minutes = duration / MINUTES_MIL;
int rest = duration - minutes * MINUTES_MIL;
int seconds = rest / SECONDS_MIL;
return String.format(Locale.getDefault(), "%02d:%02d", minutes, seconds);
/** Converts milliseconds to a string containing hours and minutes or minutes and seconds*/
public static String getDurationStringShort(int duration, boolean durationIsInHours) {
int firstPartBase = durationIsInHours ? HOURS_MIL : MINUTES_MIL;
int firstPart = duration / firstPartBase;
int leftoverFromFirstPart = duration - firstPart * firstPartBase;
int secondPart = leftoverFromFirstPart / (durationIsInHours ? MINUTES_MIL : SECONDS_MIL);
return String.format(Locale.getDefault(), "%02d:%02d", firstPart, secondPart);
}
/** Converts long duration string (HH:MM:SS) to milliseconds. */
@ -94,14 +95,20 @@ public final class Converter {
Integer.parseInt(parts[2]) * 1000;
}
/** Converts short duration string (HH:MM) to milliseconds. */
public static int durationStringShortToMs(String input) {
/**
* Converts short duration string (XX:YY) to milliseconds. If durationIsInHours is true then the
* format is HH:MM, otherwise it's MM:SS.
* */
public static int durationStringShortToMs(String input, boolean durationIsInHours) {
String[] parts = input.split(":");
if (parts.length != 2) {
return 0;
}
return Integer.parseInt(parts[0]) * 60 * 1000 +
Integer.parseInt(parts[1]) * 1000;
int modifier = durationIsInHours ? 60 : 1;
return Integer.parseInt(parts[0]) * 60 * 1000 * modifier+
Integer.parseInt(parts[1]) * 1000 * modifier;
}
/** Converts milliseconds to a localized string containing hours and minutes */