496 Stimmen

Wie zeigt man JavaScript datetime in 12 Stunden AM/PM-Format?

Wie zeigt man ein JavaScript datetime-Objekt im 12-Stunden-Format (AM/PM) an?

798voto

bbrame Punkte 16434
function formatAMPM(date) {
  var hours = date.getHours();
  var minutes = date.getMinutes();
  var ampm = hours >= 12 ? 'pm' : 'am';
  hours = hours % 12;
  hours = hours ? hours : 12; // the hour '0' should be '12'
  minutes = minutes < 10 ? '0'+minutes : minutes;
  var strTime = hours + ':' + minutes + ' ' + ampm;
  return strTime;
}

console.log(formatAMPM(new Date));

434voto

Abhay Kumar Punkte 4308

Wenn Sie nur die Stunden anzeigen wollen, dann

var time = new Date();
console.log(
  time.toLocaleString('en-US', { hour: 'numeric', hour12: true })
);  

Ausgang : 7 AM

Wenn Sie auch die Protokolle anzeigen möchten, dann...

var time = new Date();
console.log(
  time.toLocaleString('en-US', { hour: 'numeric', minute: 'numeric', hour12: true })
);

Ausgabe : 7:23 AM

49voto

Steve Tauber Punkte 8593

Hier ist ein Weg, der Regex verwendet:

console.log(new Date('7/10/2013 20:12:34').toLocaleTimeString().replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, "$1$3"))
console.log(new Date('7/10/2013 01:12:34').toLocaleTimeString().replace(/([\d]+:[\d]{2})(:[\d]{2})(.*)/, "$1$3"))

Dadurch werden 3 übereinstimmende Gruppen gebildet:

  • ([\d]+:[\d]{2}) - Stunde:Minute
  • (:[\d]{2}) - Sekunden
  • (.*) - das Leerzeichen und der Punkt (Punkt ist die offizielle Bezeichnung für AM/PM)

Dann werden die 1. und 3. Gruppe angezeigt.

WARNUNG: toLocaleTimeString() kann sich je nach Region/Ort unterschiedlich verhalten.

48voto

rattray Punkte 4083

Wenn Sie die Vormittags- und Nachmittagsstunden nicht ausdrucken müssen, finde ich das folgende Beispiel schön und übersichtlich:

var now = new Date();
var hours = now.getHours() % 12 || 12;  // 12h instead of 24h, with 12 instead of 0. 

Dies basiert auf der Antwort von @bbrame.

35voto

mtm Punkte 641

En modernen Browsern, verwenden. Intl.DateTimeFormat und das 12-Stunden-Format mit Optionen erzwingen:

    let now = new Date();

    new Intl.DateTimeFormat('default',
        {
            hour12: true,
            hour: 'numeric',
            minute: 'numeric'
        }).format(now);

    // 6:30 AM

Verwendung von default wird das Standardgebietsschema des Browsers berücksichtigen, wenn Sie weitere Optionen hinzufügen, und dennoch das 12-Stunden-Format ausgeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X