Почему мое время не показывает правильный результат при отправке? - PullRequest
0 голосов
/ 21 июня 2020

Я использую приведенный ниже код. Все нормально, но при отправке информация отправляется в 24-часовом формате. Как я могу это решить? Теперь отображается 13:00 Я хочу показать 1:00 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 gettime(){
      alert(document.getElementById("a_time").value);
    }
  </script>
</body>
  </html>

Ответы [ 3 ]

0 голосов
/ 21 июня 2020

Это то, что вы должны получить.

Ответ на этот вопрос состоит в том, что предполагается применить так называемый 24 hour format, который чиновник назвал valid time string, вы можете увидеть в HTML 5.2: 2 секции

0 голосов
/ 21 июня 2020

Вот альтернативный подход к предыдущему ответу, который использует строковые литералы шаблона и делает вещи более краткими и понятными.

Идея состоит в том, что вам нужно сначала получить часовую часть времени отдельно, а преобразовать его в целое число. Затем вам нужно написать 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>
0 голосов
/ 21 июня 2020

попробуйте это,

<!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 gettime(){
    var v = document.getElementById("a_time").value;
    var r = tConvert (v);
    alert(r);
}


function tConvert (time) {

      time = time.toString ().match (/^([01]\d|2[0-3])(:)([0-5]\d)(:[0-5]\d)?$/) || [time];
    
      if (time.length > 1) {
        time = time.slice (1); 
        time[5] = +time[0] < 12 ? 'AM' : 'PM'; 
        time[0] = +time[0] % 12 || 12; 
      }
      return time.join (''); 
}
</script>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...