【问题标题】:How to get AM or PM?如何获得上午或下午?
【发布时间】:2013-06-04 21:18:58
【问题描述】:

我有大城市名称的按钮。
单击它们,我想在它们中获取当地时间。

$('#btnToronto').click(function () {
    var hours = new Date().getHours();
    var hours = hours-2; //this is the distance from my local time
    alert ('Toronto time: ' + hours + ' h'); //this works correctly
});

但是我怎样才能得到上午或下午?

【问题讨论】:

  • 嗯...除以 12?模数?
  • @elclanrs,hours 是例如 19。除以 12... 什么?
  • 如果 hours < 12 是 PM ,否则是 AM ,不是吗?
  • @SunSky:哈哈。我搞砸了,我的坏。我发布了我的答案,希望对您有所帮助。
  • 你为什么认为你应该减去两个小时?这是没有意义的。您从new Date() 返回的日期已经是您的当地时间,除非您的计算机时区设置错误。如果您正在考虑与 UTC 的时区偏移,多伦多在标准时间是 -0500,在白天是 -0400。从来都不是-0200.getHours() 无论如何都会返回当地时间的小时数。

标签: javascript jquery datetime


【解决方案1】:

如果hours 小于12,则为a.m.

var hours = new Date().getHours(), // this is local hours, may want getUTCHours()
    am;
// adjust for timezone
hours = (hours + 24 - 2) % 24;
// get am/pm
am = hours < 12 ? 'a.m.' : 'p.m.';
// convert to 12-hour style
hours = (hours % 12) || 12;

现在,对我来说,因为你没有使用getUTCHours,现在是 2 小时后

hours + ' ' + am; // "6 p.m."

【讨论】:

    【解决方案2】:

    试试这个:

    h = h > 12 ? h-12 +'PM' : h +'AM';
    

    【讨论】:

    • 考虑;是上午 12:30(中午)还是下午?这段代码会说什么?
    【解决方案3】:

    您应该能够检查小时是否大于 12。

    var ampm = (hours >= 12) ? "PM" : "AM";
    

    但是在减去 2 之前,您是否考虑过小时小于 2 的情况?您的小时数最终会为负数。

    【讨论】:

    • 考虑:是午夜 a.m. 还是 p.m. ?中午是什么意思?这会说中午是什么?
    • @PaulS。完全正确 - 中午固定。午夜应该返回为 0 并且应该是上午,因此至少应该可以工作。
    【解决方案4】:

    试试下面的代码:

    $('#btnToronto').click(function () {
        var hours = new Date().getHours();
        var hours = (hours+24-2)%24; 
        var mid='am';
        if(hours==0){ //At 00 hours we need to show 12 am
        hours=12;
        }
        else if(hours>12)
        {
        hours=hours%12;
        mid='pm';
        }
        alert ('Toronto time: ' + hours + mid);
    });
    

    【讨论】:

    • 困惑,但我会尝试所有的解决方案。解决了(我希望)。
    • 如果时间在调整时间之前的凌晨 2 点之前会发生什么?
    【解决方案5】:

    你可以这样使用,

    var dt = new Date();
        var h =  dt.getHours(), m = dt.getMinutes();
        var _time = (h > 12) ? (h-12 + ':' + m +' PM') : (h + ':' + m +' AM');
    

    希望这会在几分钟内变得更好。

    【讨论】:

    • 不幸的是,这不适用于中午 12 点。当小时 >= 12 时,时间是下午,但当小时 >= 13 时,您只减去 12
    【解决方案6】:

    使用 date.js

    <script type="text/javascript" src="http://www.datejs.com/build/date.js"></script>
    

    你可以这样写

    new Date().toString("hh:mm tt")
    

    表格在这里format specifiers
    tt 代表AM/PM

    【讨论】:

      【解决方案7】:

      非常有趣的帖子。在参数中采用日期的函数中,它可能看起来像这样:

      function hourwithAMPM(dateInput) {
         var d = new Date(dateInput);
         var ampm = (d.getHours() >= 12) ? "PM" : "AM";
         var hours = (d.getHours() >= 12) ? d.getHours()-12 : d.getHours();
      
         return hours+' : '+d.getMinutes()+' '+ampm;
      
      }
      

      【讨论】:

        【解决方案8】:

        无需扩展和复杂编码的最佳方式:

        date.toLocaleString([], { hour12: true});
        

        How do you display javascript datetime in 12 hour AM/PM format?

        【讨论】:

          【解决方案9】:
          var now = new Date();
          var hours = now.getHours();
          var minutes = now.getMinutes();
          var ampm = hours >= 12 ? 'pm' : 'am';
          hours = hours % 12;
          hours = hours ? hours : 12;
          minutes = minutes < 10 ? '0' + minutes : minutes;
          var timewithampm = hours + ':' + minutes + ' ' + ampm;
          return timewithampm;
          

          【讨论】:

            【解决方案10】:
            var dt = new Date();
            var h = dt.getHours(),
              m = dt.getMinutes();
            var time;
            if (h == 12) {
              time = h + ":" + m + " PM";
            } else {
              time = h > 12 ? h - 12 + ":" + m + " PM" : h + ":" + m + " AM";
            }
            //var time = h > 12 ? h - 12 + ":" + m + " PM" : h + ":" + m + " AM";
            
            console.log(`CURRENT TIME IS ${time}`);
            

            这将适用于任何时候,

            【讨论】:

              【解决方案11】:
              const now = new Date()
                    .toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: true })
                    .toLowerCase();
              

              基本上你只需要输入 {hour12: true} 就可以了。

              结果 => 现在 = "21:00 pm";

              【讨论】:

                【解决方案12】:

                这是我在代码中使用的时间

                let current = new Date();
                let cDate = current.getDate() + '-' + (current.getMonth() + 1) + '-' + current.getFullYear();
                let hours = current.getHours();
                let am_pm = (hours >= 12) ? "PM" : "AM";
                
                if(hours >= 12){
                    hours -=12;
                }
                
                let cTime = hours + ":" + current.getMinutes() + ":" + current.getSeconds() +" "+ am_pm;
                let dateTime = cDate + ' ' + cTime;
                
                console.log(dateTime);   // 1-3-2021 2:28:14 PM
                

                【讨论】:

                  【解决方案13】:

                  function Timer() {
                      var dt = new Date()
                      if (dt.getHours() >= 12){
                          ampm = "PM";
                      } else {
                          ampm = "AM";
                      }
                      if (dt.getHours() < 10) {
                          hour = "0" + dt.getHours();
                      } else {
                          hour = dt.getHours();
                      }
                      if (dt.getMinutes() < 10) {
                          minute = "0" + dt.getMinutes();
                      } else {
                          minute = dt.getMinutes();
                      }
                      if (dt.getSeconds() < 10) {
                          second = "0" + dt.getSeconds();
                      } else {
                          second = dt.getSeconds();
                      }
                      if (dt.getHours() > 12) {
                          hour = dt.getHours() - 12;
                      } else {
                          hour = dt.getHours();
                      }
                      if (hour < 10) {
                          hour = "0" + hour;
                      } else {
                          hour = hour;
                      }
                      document.getElementById('time').innerHTML = hour + ":" + minute + ":" + second + " " + ampm;
                      setTimeout("Timer()", 1000);
                  }
                  Timer()
                  &lt;div id="time"&gt;&lt;/div&gt;

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2012-03-28
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-12-24
                    • 2016-11-10
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多