如何获得上午或下午?

qad*_*nza 27 javascript jquery datetime

我有大城市名字的按钮.
点击它们,我想获得当地时间.

$('#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
});
Run Code Online (Sandbox Code Playgroud)

但我怎样才能获得AM或PM?

小智 30

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

var ampm = (hours >= 12) ? "PM" : "AM";
Run Code Online (Sandbox Code Playgroud)

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


Tec*_*tes 21

试试以下代码:

$('#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);
});
Run Code Online (Sandbox Code Playgroud)

  • 如果时间是在凌晨2点之前调整时间,会发生什么? (4认同)

小智 8

你可以这样使用,

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

希望通过分钟也会更好.


小智 5

const now = new Date()
      .toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: true })
      .toLowerCase();
Run Code Online (Sandbox Code Playgroud)

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

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