Wie zeigt man ein JavaScript datetime-Objekt im 12-Stunden-Format (AM/PM) an?
Antworten
Zu viele Anzeigen?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));
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
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.
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.
- See previous answers
- Weitere Antworten anzeigen