2013-06-08 2 views
21

У меня есть кнопки с названиями больших городов.
Нажатие на них, я хочу получить местное время в них.Как получить 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?

+1

Мммм ... разделить на 12? по модулю? – elclanrs

+1

@elclanrs, 'hours' является, например,' 19'. Разделите на 12 ... что? – bonaca

+1

если 'часы <12', так что это PM, иначе это AM, нет? – Cherniv

ответ

18

Try ниже код:

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

Смущенный, но я попробую все решения. Решено (надеюсь). – bonaca

+4

Что произойдет, если время до 2 часов до момента настройки? –

+0

@PaulS. U верны. Позвольте мне настроить код. – TechBytes

3

Если 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'; 
+1

Рассмотрите; 12:30 (в полдень) или в пятницу? Что скажет этот код? –

24

Вы просто должны быть в состоянии проверить, часов больше 12.

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

Но рассмотрели ли вы случай, когда час меньше 2, прежде чем вы вычтите 2? В итоге у вас будет отрицательное число для вашего часа.

+0

Рассмотрите: полночь _a.m._ или _p.m._? Что это значит за полдень? Что это скажет полдень? –

+0

@PaulS. Совершенно верно - фиксируется в полдень. Полночь должна возвращаться как 0 и должна быть am, так что, по крайней мере, должно было сработать. –

6

Вы можете использовать, как это,

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

Hopes это будет лучше минут тоже.

+0

спасибо человеку, приведенный выше код действительно помогает мне –

-1
Try this: 

var currentTimestamp = Date.now(); 
var postHour = currentTimestamp.getHours(); 
var mid=""; 
//var forMinutes = " For 15 Minutes"; 
if (postHour == 0 && postHour<12) 
{ //At 00 hours we need to show 12 am 
    mid = "am"; 
} 
else if (postHour >= 12) 
{ 
    mid='pm'; 
} 
4

с date.js

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

вы можете написать, как этот

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

cheet лист здесь format specifiers
tt для AM/PM

2

очень интересный пост. в функции, которые принимают дату в параметре может выглядеть, что:

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; 

} 
0

Я хотел бы использовать объект Date , вместо того, чтобы усложнять ситуацию. Кроме того, я думал, что лучше всего добавить нули для однозначных часов. Я написал это format-12h component, который форматирует объект Date как 12-часовое время.

Вы можете ознакомиться с кодом и результатами тестов. Вы можете импортировать его и использовать, как показано в следующих примерах:

format12h(new Date(2017,06,04,10,45,10)) => 10:45 am 
format12h(new Date(2017,06,04,23,45,10)) => 11:45 pm 
format12h(new Date(2017,06,04,23,45,10), true) => 11:45:10 pm 
Смежные вопросы