2016-11-15 2 views
0

Это проблема с преобразованием времени от 12-часового формата к военному/24-часовому времени.
Стандартный ввод: 07:05:45PM
Ожидаемый выход: 19:05:45
Стандарт/фактический выход: 019:05:45
Проблема заключается в нулевом ^ в начале вывода.Удаление нуля с начала 24-часового преобразования времени

Я попытался установить parseInt() с радиусом 10 для десятичной системы счисления, но это не оказало никакого эффекта.

Это результат этого следующий код:

function main() { 
    var time = readLine(); 

    var hours = parseInt(time.substr(0, 2), 10); 
    var minutes = parseInt(time.substr(3,5)); 
    var seconds = parseInt(time.substr(6,8)); 

    if (time.indexOf('AM') !== -1 && hours === 12) { 
    time = time.replace('12', '00'); 
    } 
    if (time.indexOf('PM') !== -1 && hours < 12) { 
    time = time.replace(hours, (hours + 12)); 
    } 

    time = time.replace(/(AM|PM)/g, ''); 
    console.log(time); 
} 

Любая помощь будет оценен по достоинству!

+0

Попробуйте следующее: часы = + часы –

+0

Я не понимаю, что вы имеете в виду. Куда вы думаете, что нужно положить? –

+0

time = time.replace (часы, (часы + 12)); –

ответ

1

Вы можете просто перестроить строку вместо замены. Поскольку вы используете замену в своем примере, вы просто заменяете 7 на 19. Использование replace также вызывает проблемы, если у вас есть время, например 12:12:12.

ex.

function main() { 
    var time = readLine(); 

    var hours = parseInt(time.substr(0, 2), 10); 
    var minutes = time.substr(3,5); 
    var seconds = time.substr(6,8); 

    if (time.indexOf('AM') !== -1 && hours === 12) { 
    hours = 0; 
    } 
    else if (time.indexOf('PM') !== -1 && hours < 12) { 
    hours += 12; 
    } 

    time = (hours < 10 ? "0" + hours : hours) + ':' + minutes + ':' + seconds; 
    console.log(time); 
} 
+0

Это работает по большей части! Мне просто пришлось добавить условие для каждого часа/минут/секунд, чтобы включить ноль, если они меньше 10: 'время = часы + ':' + (минуты <10?" 0 "+ минуты: минуты) + ':' + (секунды <10?" 0 "+ секунды: секунды); ' –

+0

Да, я пропустил это, Джон, я обновил его, чтобы исправить эту проблему. Нет смысла конвертировать минуты и секунды в целые числа в порядке, как строки, это устраняет необходимость в условных выражениях для этих переменных, но вы должны делать это условно в течение нескольких часов. –

+0

Спасибо! Хотя, похоже, если я не конвертирую их в целые числа, я все равно получаю AM/PM, входящий в вывод, что является странным, так как 'substr()' должен обрабатывать это. Я собираюсь оставить его с конверсией и условными обозначениями, чтобы передать тестовые примеры, но я обязательно посмотрю, почему он все еще делает это без них. Спасибо за помощь Джейкоба! –