如何获得AM或PM?

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

$('#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 }); 

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

试试以下代码:

 $('#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); }); 

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

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

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

你可以这样使用,

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

希望通过分钟也会更好。

与date.js

  

你可以写这样的

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

cheet sheet是格式说明符
ttAM/PM

如果hours数小于12 ,那就是上午

 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 ? 'am' : 'pm'; // convert to 12-hour style hours = (hours % 12) || 12; 

现在,对于我,因为你没有使用getUTCHours ,它目前是2小时后

 hours + ' ' + am; // "6 pm" 

试试这个:

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

非常有趣的post。 在参数中取一个日期的函数中它可以显示如下:

 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; } 

没有扩展和复杂编码的最佳方法:

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

如何以12小时AM / PM格式显示javascript日期时间?