2013-06-08 7 views
21

Ich habe Knöpfe mit den Namen von Großstädten.
Wenn ich darauf klicke, möchte ich die lokale Zeit in ihnen sehen.Wie bekomme ich AM oder 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 
}); 

Aber wie kann ich AM oder PM bekommen?

+1

Mmmm ... dividieren durch 12? modulo? – elclanrs

+1

@elclanrs, 'Stunden' ist zum Beispiel' 19'. Teile durch 12 ... was? – bonaca

+1

wenn 'stunden <12' so ist es PM, sonst ist es AM, nein? – Cherniv

Antwort

18

Try unten Code:

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

Verwirrt, aber ich werde alle Lösungen versuchen. Gelöst (ich hoffe). – bonaca

+4

Was passiert, wenn die Uhrzeit vor 2 Uhr morgens vor dem Einstellen der Stunden ist? –

+0

@PaulS. U sind richtig. Lass mich den Code optimieren. – TechBytes

3

Wenn hours weniger als 12, es ist die Uhr vormittags.

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; 

nun für mich, da Sie nicht getUTCHours verwendet haben, ist es noch 2 Stunden nach

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

Versuchen Sie folgendes:

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

Betrachten; ist 12:30 (mittags) vormittags oder nachmittags? Was wird dieser Code sagen? –

24

Sie sollten nur in der Lage sein, wenn zu überprüfen Stunden ist größer als 12.

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

Aber haben Sie den Fall berücksichtigt, in dem die Stunde weniger als 2 ist, bevor Sie 2 subtrahieren? Sie würden mit einer negativen Zahl für Ihre Stunde enden.

+0

Betrachte: ist Mitternacht _am_ oder _p.m._? Was bedeutet das für Mittag? Was wird das Mittag sagen? –

+0

@PaulS. Ganz richtig - für Mittag fixiert. Mitternacht sollte als 0 zurückkommen und sollte am sein, so dass zumindest hätte funktionieren sollen. –

6

Sie können wie folgt verwenden,

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

hofft, dass dies auch mit Minuten besser.

+0

danke Mann, der obige Code hilft mir wirklich –

-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

mit date.js

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

Sie dieses schreiben kann

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

cheet Blatt ist hier format specifiers
tt ist für AM/PM

2

sehr interessante Post. in einer Funktion, die ein Datum im Parameter erfolgen kann es so erscheinen:

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

Ich mag das Date-Objekt verwenden, , anstatt Dinge zu verkomplizieren. Auch ich dachte, es wäre am besten, Nullen für einstellige Stunden hinzuzufügen. Ich schrieb diese format-12h component, die ein Date-Objekt als 12-Stunden-Zeit formatiert.

Sie können sich den Code und die Testergebnisse ansehen. Fühlen Sie sich frei, es zu importieren und zu verwenden, wie in diesen Beispielen gezeigt:

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 
Verwandte Themen