Перевести время видео youtube?

127
21 января 2020, 19:00

Получил время видео youtube, через Json PT24M30S, можно как нибудить перевести, это время в секунды?

Answer 1

Вариантов масса. Например можно парсить строку руками, проще задом наперед, заводите три поля, для часов, минут, секунд, видите соответствующий символ в строке, значит перед ними цифры, считываете их, получаете число, записываете, типа такого:

static int timeStringtoSeconds(String time) {
    int h = 0;
    int m = 0;
    int s = 0;
    char currentModifier = 'S';
    String currentValue = "";
    for (int i = time.length() - 1; i >= 0; i--) {
        if (Character.isAlphabetic(time.charAt(i))) {
            if (!currentValue.isEmpty()) {
                switch (currentModifier) {
                    case 'S':
                        s = Integer.parseInt(currentValue);
                        break;
                    case 'M':
                        m = Integer.parseInt(currentValue);
                        break;
                    case 'H':
                        h = Integer.parseInt(currentValue);
                        break;
                }
                currentValue = "";
            }
            currentModifier = time.charAt(i);
        } else {
            currentValue = time.charAt(i) + currentValue;
        }
    }
    return h * 60 * 60 + m * 60 + s;
}

Либо можно разбить на группы примерно регуляркой, и дальше просто уже из групп составлять значение, как-то так:

static int regex(String time){
    Pattern p = Pattern.compile("PT(\\d*H)?(\\d*M)?(\\d*S)?");
    Matcher m = p.matcher(time);
    int result = 0;
    if(m.find()){
        String hg = m.group(1);
        String mg = m.group(2);
        String sg = m.group(3);
        result += hg != null 
            ? Integer.parseInt(hg.substring(0, hg.length() - 1)) * 60 * 60 
            : 0;
        result += mg != null 
            ? Integer.parseInt(mg.substring(0, mg.length() - 1)) * 60 
            : 0;
        result += sg != null 
            ? Integer.parseInt(sg.substring(0, sg.length() - 1)) 
            : 0;
    }
    return result;
}
READ ALSO
Обязательно ли использовать @Order вместе с @ControllerAdvice?

Обязательно ли использовать @Order вместе с @ControllerAdvice?

У меня в приложении есть несколько самописных Spring AOP-аспектов, для которых установлен порядок вызова с помощью аннотации @Order

140
ключевое слово статик

ключевое слово статик

Бывает нужно, чтобы переменная была в единственном экземпляреКак, например, переменная System

108
Java dependencies. The following modules must have the same JDK assigned because of cyclic dependencies

Java dependencies. The following modules must have the same JDK assigned because of cyclic dependencies

Речь идет о java проекте с использованием maven и POM dependencies (только начал с ними знакомиться)

292
Вставка java.time.LocalDate в MySQL с использованием JDBC

Вставка java.time.LocalDate в MySQL с использованием JDBC

Мне нужно сохранить в БД локальную дату(не указывая часовой пояс)В моей программе на java эта дата храниться в java

125