Как перевести строку во время?

285
26 июня 2017, 18:28

Есть строки:

String s1 = "7:00";
String s2 = "12:34:56";
String s3 = "13:20";

Как их быстро перевести в int

int hh, mm, ss;
Answer 1
public static int[] unpack(String time) throws NullPointerException, NumberFormatException {
    int[] output = {0, 0, 0};
    String[] parts = time.split(":");
    for (int x = 0; x < parts.length; x++) {
        if (x >= output.length)
            break;
        output[x] = Integer.parseInt(parts[x]);
    }
    return output;
}
int[] result = unpack("12:34:56");
int hh = result[0];
int mm = result[1];
int ss = result[2];   
Answer 2

Можно разбить строку на массив строк по разделителю :, затем преобразовать этот массив строк в массив чисел и в зависимости от длины получившегося массива (2 или 3) интерпретировать этот массив как [hh, mm] или [hh, mm, ss].

String s = "12:34:56";
int[] numbers = Stream
        .of(s.split(":"))
        .mapToInt(Integer::valueOf)
        .toArray();
if (numbers.length == 2) {
    int hh = numbers[0];
    int mm = numbers[1];
    // ...
} else if (numbers.length == 3) {
    int hh = numbers[0];
    int mm = numbers[1];
    int ss = numbers[2];
    // ...
} else {
    throw new Exception();
}

Если хочется сделать покороче, то можно попробовать так:

String s = "12:34:56";
String[] numbers = (s.length() <= 5 ? s + ":00" : s).split(":");
int hh = Integer.valueOf(numbers[0]);
int mm = Integer.valueOf(numbers[1]);
int ss = Integer.valueOf(numbers[2]);
READ ALSO
java | мелкий вопрос по поводу метода equals

java | мелкий вопрос по поводу метода equals

Как реализованы методы по типу equals? Я понимаю, конечно же, что метод equals должен вызвать объект: собственно, в этом и вопросКак он так написан,...

266
Выбор режима чего-либо. Как сделать менее затратный переключатель режимов для игры

Выбор режима чего-либо. Как сделать менее затратный переключатель режимов для игры

Допустим, есть игра в которой 2 режимаПри одном режиме шарики от стен отскакивают, а при другом не отскакивают

341
Как работать с полем типа DateTime в MSSQL через JDBC?

Как работать с полем типа DateTime в MSSQL через JDBC?

Есть таблица в которой содержится поле типа DateTime в котором хронится дата и время некой операцииПри запросе через MS SQL Manager я вижу что есть...

332