Вот альтернативный подход к предыдущему ответу, который использует строковые литералы шаблона и делает вещи более краткими и понятными.
Идея состоит в том, что вам нужно сначала получить часовую часть времени отдельно, а преобразовать его в целое число. Затем вам нужно написать logi c, чтобы проверить, не превышает ли это число 12, чтобы проверить, является ли это PM (а также проверьте угловые случаи, когда число либо 0
, что означает полночь, либо 12
, что означает полдень). Если сейчас полночь или полдень, верните 12. После 12 возьмите оставшуюся модификацию 12. В противном случае верните часы как есть. Прикрепите минуты как есть, а потом добавьте либо AM, либо PM:
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
<input type="time" value="" id="a_time">
<input type="button" onclick="gettime();" value="Click Here">
<script type="text/javascript">
function formatTime(timeStr) {
const hours = timeStr.substring(0, 2);
const mins = timeStr.substring(3, 5);
const isTwelve = parseInt(hours) === 0 || parseInt(hours) === 12;
const isPM = parseInt(hours) >= 12;
return `${isTwelve ? "12" : isPM ? `0${parseInt(hours) % 12}` : hours}:${mins} ${isPM ? "PM" : "AM"}`
}
function gettime(){
const formattedTime = formatTime(document.getElementById("a_time").value);
alert(formattedTime);
}
</script>
</body>
</html>