@Ritesh Zweimal WARNING: toLocaleTimeString() may behave differently based on region / location.messen, einmal schneiden.
Verlassener Wagen
@AbandonedCart ist das eigentlich ein Sprichwort?
Gilbert-v
1
@ gilbert-v One should double-check one's measurements for accuracy before cutting a piece of wood; otherwise it may be necessary to cut again, wasting time and material.Diese Frage wird wahrscheinlich besser bei Google gestellt.
Verlassener Wagen
Ich werde mich nie daran gewöhnen, wie verdammt kompliziert es ist, mit einfachen Daten in JavaScript zu arbeiten. 😠
Außerdem haben Sie die Variable "Stunden" zweimal deklariert, aber "strTime" zu einer zufälligen globalen Variable gemacht. Es ist nicht sehr elegant, aber dies scheint die richtige Technik mit nativen Methoden zu sein.
Jon z
Hallo, kannst du mir erklären, was du damit machst: Minuten = Minuten <10? '0' + Minuten: Minuten;
Balz
2
@Balz Wenn die Minuten kleiner als 10 sind (z. B. 16:04), fügt diese Anweisung die Zeichenfolge "0" hinzu, sodass die formatierte Ausgabe "4:04 PM" anstelle von "4: 4 PM" lautet. Beachten Sie, dass sich dabei die Minuten von einer Zahl in eine Zeichenfolge ändern.
Caleb Bell
7
Ich bevorzuge dies minutes = ('0'+minutes).slice(-2);eher als minutes = minutes < 10 ? '0'+minutes : minutes;
Vignesh
1
Die @ Vignesh-Lösung für die Minuten ist besser, denn wenn Sie die vorgeschlagene Lösung ausführen, wird 21:00:00 zu 9: 000. Vignesh's gibt Ihnen die richtigen Minuten als: 00. Wenn Sie die obige Lösung verwenden würden, müssten Sie auch die 00 berücksichtigen. (Minuten> 0 && Minuten <10)? '0' + Minuten: Minuten;
Robbie Smith
201
Wenn Sie nur die Stunden anzeigen möchten, dann ..
var time =newDate();
console.log(
time.toLocaleString('en-US',{ hour:'numeric', hour12:true}));
Die Leute benutzen Regex nicht genug. Dies funktionierte für mich, ohne die obigen Vorschläge für die jquery / microsoftajax-Bibliothek hinzuzufügen.
Uadrive
Was wäre der reguläre Ausdruck, wenn zu Beginn der Stunde eine nachgestellte Null wäre, wenn es sich um eine einzelne Ziffer handeln würde? Sagen Sie in Ihrem ersten Beispiel von 20.12 Uhr, es wäre 20.12 Uhr?
RADXack
1
@ 404 es ist das gleiche, ([\d]+:[\d]{2})ist der Teil, an dem wir interessiert sind. Verwenden Sie den Doppelpunkt (:) als Trennzeichen und wir sehen, dass der erste Teil ist [\d]+. Das Plus bedeutet eins oder mehrere. Es wird also nach einer oder mehreren Ziffern gesucht (einschließlich Null. Wenn Sie garantieren müssten, dass eine Null vorhanden ist, wäre dies der Fall (0[\d]:[\d]{2}). Dies lautet nun: Suchen Sie nach 0 plus einer weiteren Ziffer, dann nach Doppelpunkt und dann nach dem Rest.
Steve Tauber
1
console.log (new Date (). toLocaleTimeString (). replace (/ ([\ d] +: [\ d] {2}) (: [\ d] {2}) (. *) /, "$ 1 $ 3 ")); Um die aktuelle Zeit zu erhalten
Mujaffars
35
Wenn Sie die Uhr nicht drucken müssen, fand ich Folgendes schön und prägnant:
var now =newDate();var hours = now.getHours()%12||12;// 12h instead of 24h, with 12 instead of 0.
@koolinc für Mitternacht zeigt es 12. Ich bin nicht sicher, was das gewünschte Verhalten sonst wäre.
Rattray
Ich stehe korrigiert. In meinem Land wird die 24-Stunden-Uhr verwendet, daher bin ich mit der 12-Stunden-Uhr nicht so vertraut. In der Tat ist Mitternacht 12:00 Uhr.
KooiInc
16
Soweit ich weiß, ist der beste Weg, dies ohne Erweiterungen und komplexe Codierung zu erreichen, folgender:
<!DOCTYPE html><html><body><p>Click the button to display the date and time as a string.</p><buttononclick="myFunction()">Try it</button><buttononclick="fullDateTime()">Try it2</button><pid="demo"></p><pid="demo2"></p><script>function myFunction(){var d =newDate();var n = d.toLocaleString([],{ hour:'2-digit', minute:'2-digit'});
document.getElementById("demo").innerHTML = n;}function fullDateTime(){var d =newDate();var n = d.toLocaleString([],{ hour12:true});
document.getElementById("demo2").innerHTML = n;}</script></body></html>
Sollte für die Stundenberechnung kleiner oder gleich sein, sonst wird der Mittag als 0 angezeigt. Also: var hour = (d.getHours () <= 12). Es gibt immer noch ein Problem mit Mitternacht, daher müssen Sie überprüfen, ob Null ist, und dann auch auf 12 setzen.
Dies funktioniert nicht mit den neuesten Safari- und Firefox-Browsern. Die Zeit verwendet immer noch das 24-Stunden-Format
am
1
Antworten werden mit der Zeit veraltet. Fühlen Sie sich frei zu bearbeiten und zu aktualisieren!
Geo
Dadurch sieht die Zeichenfolge tatsächlich so aus 1:54 PM CDT. Um das zu entfernen, CDTändern Sie Ihren regulären Ausdruck wie folgt .replace(/:\d+ |\CDT/g, ' '). Obwohl CDT nur meine Zeitzone ist. Wenn Sie eine andere Zeitzone haben, müssten Sie wahrscheinlich zu diesem Zonencode wechseln.
Sadmicrowave
Die Ausgabe von toLocaleTimeString ist implementierungsabhängig und daher nicht überall zuverlässig dasselbe Format.
RobG
9
Verwenden und erzwingen Sie in modernen Browsern dasIntl.DateTimeFormat 12-Stunden-Format mit folgenden Optionen:
let now =newDate();newIntl.DateTimeFormat('default',{
hour12:true,
hour:'numeric',
minute:'numeric'}).format(now);// 6:30 AM
Die Verwendung defaultberücksichtigt das Standardgebietsschema des Browsers, wenn Sie weitere Optionen hinzufügen, gibt jedoch weiterhin das 12-Stunden-Format aus.
Mit diesem einfachen Code können Sie morgens oder abends bestimmen
var today=newDate();var noon=newDate(today.getFullYear(),today.getMonth(),today.getDate(),12,0,0);var ampm =(today.getTime()<noon.getTime())?'am':'pm';
<h1 id="clock_display"class="text-center" style="font-size:40px; color:#ffffff">[CLOCK TIME DISPLAYS HERE]</h1><script>var AM_or_PM ="AM";function startTime(){var today =newDate();var h = today.getHours();var m = today.getMinutes();var s = today.getSeconds();
h = twelve_hour_time(h);
m = checkTime(m);
s = checkTime(s);
document.getElementById('clock_display').innerHTML =
h +":"+ m +":"+ s +" "+AM_or_PM;var t = setTimeout(startTime,1000);}function checkTime(i){if(i <10){
i ="0"+ i;// add zero in front of numbers < 10}return i;}// CONVERT TO 12 HOUR TIME. SET AM OR PMfunction twelve_hour_time(h){if(h >12){
h = h -12;
AM_or_PM =" PM";}return h;}
startTime();</script>
<script>
time =function(){var today =newDate();var h = today.getHours();var m = today.getMinutes();var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('txt_clock').innerHTML = h +":"+ m +":"+ s;var t = setTimeout(function(){time()},0);}
time2 =function(){var today =newDate();var h = today.getHours();var m = today.getMinutes();var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);if(h>12){
document.getElementById('txt_clock_stan').innerHTML = h-12+":"+ m +":"+ s;}var t = setTimeout(function(){time2()},0);}
time3 =function(){var today =newDate();var h = today.getHours();var m = today.getMinutes();var s = today.getSeconds();if(h>12){
document.getElementById('hour_line').style.width = h-12+'em';}
document.getElementById('minute_line').style.width = m +'em';
document.getElementById('second_line').style.width = s +'em';var t = setTimeout(function(){time3()},0);}
checkTime =function(i){if(i<10){i ="0"+ i};// add zero in front of numbers < 10return i;}</script>
Das ist falsch. Die Stunden könnten größer als 12 sein.
Utsav T
Um 12.00 Uhr ist die var ampm "pm". Die Stunden von 12.00 bis 23.00 Uhr sind also 12 bis 23 Uhr, in denen der Wert "pm" gespeichert wird, und für andere speichert var ampm den Wert "am". Ich hoffe du verstehst.
Md Juyel Rana
Hallo Juyel! In der Tat wäre der Wert PM, wenn die Stunden größer als 12 sind. Die Frage lautet jedoch: "Wie wird die JavaScript-Datumszeit im 12-Stunden-AM / PM-Format angezeigt?" - Sie müssen OP dabei helfen, die gesamte Zeit in das AM / PM-Format zu konvertieren. Zum Beispiel wäre 14:30 Uhr 14:30 Uhr.
WARNING: toLocaleTimeString() may behave differently based on region / location.
messen, einmal schneiden.One should double-check one's measurements for accuracy before cutting a piece of wood; otherwise it may be necessary to cut again, wasting time and material.
Diese Frage wird wahrscheinlich besser bei Google gestellt.Antworten:
quelle
minutes = ('0'+minutes).slice(-2);
eher alsminutes = minutes < 10 ? '0'+minutes : minutes;
Wenn Sie nur die Stunden anzeigen möchten, dann ..
Ausgabe: 7 Uhr
Wenn Sie auch die Protokolle anzeigen möchten, dann ...
Ausgabe: 7:23 Uhr
quelle
toLocaleString
wird nur auf IE11 + unterstützt.'numeric'
mit'2-digit'
.Sie können auch die Verwendung von date.js in Betracht ziehen :
quelle
Hier ist eine Möglichkeit, Regex zu verwenden:
Dadurch werden 3 übereinstimmende Gruppen erstellt:
([\d]+:[\d]{2})
- Stunde: Minute(:[\d]{2})
- Sekunden(.*)
- Raum und Zeitraum (Zeitraum ist der offizielle Name für AM / PM)Dann werden die 1. und 3. Gruppe angezeigt.
WARNUNG: toLocaleTimeString () kann sich je nach Region / Standort unterschiedlich verhalten.
quelle
([\d]+:[\d]{2})
ist der Teil, an dem wir interessiert sind. Verwenden Sie den Doppelpunkt (:) als Trennzeichen und wir sehen, dass der erste Teil ist[\d]+
. Das Plus bedeutet eins oder mehrere. Es wird also nach einer oder mehreren Ziffern gesucht (einschließlich Null. Wenn Sie garantieren müssten, dass eine Null vorhanden ist, wäre dies der Fall(0[\d]:[\d]{2})
. Dies lautet nun: Suchen Sie nach 0 plus einer weiteren Ziffer, dann nach Doppelpunkt und dann nach dem Rest.Wenn Sie die Uhr nicht drucken müssen, fand ich Folgendes schön und prägnant:
Dies basiert auf der Antwort von @ bbrame.
quelle
Soweit ich weiß, ist der beste Weg, dies ohne Erweiterungen und komplexe Codierung zu erreichen, folgender:
Javascript AM / PM-Format
Ich fand dies beim Auschecken dieser Frage.
Wie verwende ich .toLocaleTimeString (), ohne Sekunden anzuzeigen?
quelle
Mein Vorschlag ist, Moment js für Datums- und Uhrzeitbetrieb zu verwenden.
https://momentjs.com/docs/#/displaying/format/
quelle
Die Lösung finden Sie unten
quelle
verwenden
dateObj.toLocaleString([locales[, options]])
Option 1 - Verwenden von Gebietsschemas
Option 2 - Verwenden von Optionen
Hinweis: Wird von allen Browsern außer Safari atm unterstützt
quelle
Kurzer RegExp für en-US:
quelle
1:54 PM CDT
. Um das zu entfernen,CDT
ändern Sie Ihren regulären Ausdruck wie folgt.replace(/:\d+ |\CDT/g, ' ')
. Obwohl CDT nur meine Zeitzone ist. Wenn Sie eine andere Zeitzone haben, müssten Sie wahrscheinlich zu diesem Zonencode wechseln.Verwenden und erzwingen Sie in modernen Browsern das
Intl.DateTimeFormat
12-Stunden-Format mit folgenden Optionen:Die Verwendung
default
berücksichtigt das Standardgebietsschema des Browsers, wenn Sie weitere Optionen hinzufügen, gibt jedoch weiterhin das 12-Stunden-Format aus.quelle
Verwenden Sie Moment.js für diese
Verwenden Sie die folgenden Codes in JavaScript, wenn Sie moment.js verwenden
Die
format()
Methode gibt das Datum in einem bestimmten Format zurück.quelle
Schauen Sie sich Datejs an . Die integrierten Formatierer können dies tun: http://code.google.com/p/datejs/wiki/APIDocumentation#toString
Es ist eine sehr praktische Bibliothek, insbesondere wenn Sie andere Dinge mit Datumsobjekten tun möchten.
quelle
Ich glaube, es ist hier, es funktioniert gut.
und Plunker Beispiel hier
quelle
quelle
Hier ist ein anderer Weg, der einfach und sehr effektiv ist:
quelle
Mit diesem einfachen Code können Sie morgens oder abends bestimmen
quelle
quelle
quelle
quelle
Hier meine Lösung
quelle
Oder machen Sie einfach den folgenden Code:
quelle
Eine kurze und süße Umsetzung:
quelle
Versuche dies
quelle