2013-06-08 9 views
21

Ho i pulsanti con i nomi delle grandi città.
Cliccandoli, voglio ottenere l'ora locale in loro.Come ottenere AM o 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 
}); 

Ma come posso ottenere AM o PM?

+1

Mmmm ... dividere per 12? modulo? – elclanrs

+1

@elclanrs, 'hours' è per esempio' 19'. Dividi per 12 ... cosa? – bonaca

+1

se 'ore <12' quindi è PM, altrimenti è AM, no? – Cherniv

risposta

18

Prova sottostante Codice:

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

Confuso, ma proverò tutte le soluzioni. Risolto (spero). – bonaca

+4

Cosa succede se l'ora è precedente alle 02:00 prima di regolare le ore? –

+0

@PaulS. U sono corretti. Fammi modificare il codice. – TechBytes

3

Se hours è inferiore a 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 ? 'a.m.' : 'p.m.'; 
// convert to 12-hour style 
hours = (hours % 12) || 12; 

Ora, per me non è stato utilizzato getUTCHours, attualmente è 2 ore dopo

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

Prova questo:

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

Considerare; sono le 12:30 (mezzogiorno) am o pm? Cosa dirà questo codice? –

24

Si dovrebbe solo essere in grado di verificare se ore è maggiore di 12.

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

Ma hai considerato il caso in cui l'ora è inferiore a 2 prima di sottrarre 2? Finiresti con un numero negativo per la tua ora.

+0

Considera: è mezzanotte _a.m._ o _p.m._? Cosa significa per mezzogiorno? Che cosa significa questo mezzogiorno? –

+0

@PaulS. Giusto - fissato per mezzogiorno. La mezzanotte dovrebbe tornare come 0 e dovrebbe essere, quindi almeno avrebbe dovuto funzionare. –

6

È possibile utilizzare in questo modo,

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

spera che questo sarà meglio con minuti troppo.

+0

grazie amico, il codice sopra mi aiuta davvero –

-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

con date.js

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

è possibile scrivere come questo foglio cheet

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

è qui format specifiers
tt è per AM/PM

2

post molto interessante. in una funzione che prende una data nel parametro può apparire così:

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

Mi piace usare l'oggetto Date , invece di complicare le cose. Inoltre, ho pensato di aggiungere degli zeri per le ore a una cifra. Ho scritto questo format-12h component che formatta un oggetto Date come 12 ore.

Puoi dare un'occhiata al codice e ai risultati del test. Sentitevi liberi di importare e utilizzare come mostrato in questi esempi:

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 
Problemi correlati