Java: How to convert a string (HH:MM:SS) to a duration?

duration, java, string

Solution

Your `myCdDuration` is confusing. Do you want one `Duration` object equivalent to whatever was specified in the string, or a list of `Duration` objects where the first contains the hours, the second minutes etc?

You can't just cast a `String` into some other object. You should parse the value into an numeric type and use `DataTypeFactory` to construct the `Duration` object.

Problem

i want to convert a string with a format of HH:MM:SS or MM:SS or SS into a datatype of Duration. solution: ``` private ArrayList<Duration> myCdDuration = new ArrayList<Duration>(); private void convert(String aDuration) { chooseNewDuration(stringToInt(splitDuration(aDuration))); //stringToInt() returns an int[] and splitDuration() returns a String[] } private void chooseNewDuration(int[] array) { int elements = array.length; switch (elements) { case 1: myCdDuration.add(newDuration(true, 0, 0, 0, 0, 0, array[0])); break; case 2: myCdDuration.add(newDuration(true, 0, 0, 0, 0, array[0], array[1])); break; case 3: myCdDuration.add(newDuration(true, 0, 0, 0, array[0], array[1], array[2])); break; } } ``` thanks for help ... any easier way to do that ? -> create your own Duration class: ``` public class Duration { private int intSongDuration; private String printSongDuration; public String getPrintSongDuration() { return printSongDuration; } public void setPrintSongDuration(int songDuration) { printSongDuration = intToStringDuration(songDuration); } public int getIntSongDuration() { return intSongDuration; } public void setIntSongDuration(int songDuration) { intSongDuration = songDuration; } public Duration(int songDuration) { setIntSongDuration(songDuration); } ``` Converts the int value into a String for output/print: ``` private String intToStringDuration(int aDuration) { String result = ""; int hours = 0, minutes = 0, seconds = 0; hours = aDuration / 3600; minutes = (aDuration - hours * 3600) / 60; seconds = (aDuration - (hours * 3600 + minutes * 60)); result = String.format("%02d:%02d:%02d", hours, minutes, seconds); return result; } ```

Original source

Related problems