为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的时间在提交时没有显示正确的输出?

为什么我的时间在提交时没有显示正确的输出?

小唯快跑啊 2022-10-13 17:19:12
我正在使用下面的代码。一切都很好,但是当我发送信息时,它会以 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 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

这是上一个答案的另一种方法,它使用模板文字字符串,使事情更简洁,更容易理解。


这个想法是,您首先需要自己获取时间的小时部分并将其转换为整数。接下来,您需要编写逻辑来检查该数字是否大于 12 以检查它是否是 PM(并且还检查数字是0午夜还是12中午时的极端情况)。如果是午夜或中午,则返回 12。超过 12,取余数 mod 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>


查看完整回答
反对 回复 2022-10-13
?
茅侃侃

TA贡献1842条经验 获得超21个赞

这就是你应该得到的。

对这个问题的回答是,所谓24 hour format的就是它想应用的东西,官方命名为valid time string,可以在HTML 5.2:2 部分看到


查看完整回答
反对 回复 2022-10-13
?
波斯汪

TA贡献1811条经验 获得超4个赞

尝试这个,


<!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>


查看完整回答
反对 回复 2022-10-13
  • 3 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信