Ich versuche gerade, die Zeit des Benutzers anzuzeigen, ohne die Sekunden anzuzeigen. Gibt es eine Möglichkeit, dies mit .toLocaleTimeString () von Javascript zu tun?
So etwas machen:
var date = new Date();
var string = date.toLocaleTimeString();
zeigt die Zeit des Benutzers mit jedem Gerät an, z. B. zeigt es derzeit 3:39:15 PM an. Kann ich dieselbe Zeichenfolge nur ohne Sekunden anzeigen? (zB 15.39 Uhr)
javascript
time
javadog36
quelle
quelle
hour: "2-digit"
, ich arbeite nicht für mich in Chrome 42 oder FF 37 ---d = new Date(1429524912495).toLocaleTimeString('en-US', {hour: '2-digit', minute: '2-digit', hour12: true})
kehrt"6:15 AM"
in beiden zurück.[]
diese Option, um ein bestimmtes Gebietsschema wegzulassen. Auf diese Weise bleiben Sie beim Gebietsschema des Benutzers:toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}
new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', hour12: false}); "17:08"
Das funktioniert bei mir:
quelle
Der von Date.prototype.toLocaleString zurückgegebene Wert ist implementierungsabhängig, sodass Sie das erhalten, was Sie erhalten. Sie können versuchen, die Zeichenfolge zu analysieren, um Sekunden zu entfernen. In verschiedenen Browsern kann dies jedoch unterschiedlich sein, sodass Sie jeden verwendeten Browser berücksichtigen müssen.
Das Erstellen eines eigenen, eindeutigen Formats ist mit Datumsmethoden nicht schwierig. Beispielsweise:
quelle
Mit Gebietsschemas:
quelle
Ich habe auch nach einer Lösung für dieses Problem gesucht. Folgendes habe ich mir schließlich ausgedacht:
Sie können es hier versuchen: http://jsfiddle.net/B5Zrx/
\ u200E ist ein Formatierungszeichen, das ich in einer IE-Version gesehen habe (es ist eine Unicode-Markierung von links nach rechts).
Ich gehe davon aus, dass, wenn die formatierte Zeit etwas wie "XX: XX: XX" enthält, es Zeit mit Sekunden sein muss und ich den letzten Teil entferne. Wenn ich dieses Muster nicht finde, wird nichts geändert. Ziemlich sicher, aber es besteht die Gefahr, dass unter seltsamen Umständen Sekunden verbleiben.
Ich hoffe nur, dass es kein Gebietsschema gibt, das die Reihenfolge der formatierten Zeitteile ändern würde (z. B. ss: mm: hh). Diese Markierung von links nach rechts macht mich allerdings etwas nervös, deshalb entferne ich die Markierung von rechts nach links (\ u202E) nicht - ich ziehe es vor, in diesem Fall keine Übereinstimmung zu finden und die zu verlassen Zeit in diesem Fall mit Sekunden formatiert.
quelle
toLocaleTimeString()
Renditen möglicherweise nicht für alle Gebietsschemas zutreffen.Sie können dies versuchen, was für meine Bedürfnisse funktioniert.
oder
quelle
:
.Hier ist eine Funktion, die dies tut, mit Kommentaren, die erklären:
Da toLocaleTimeString (), wie andere angemerkt haben, in verschiedenen Browsern unterschiedlich implementiert werden kann, bietet diese Methode eine bessere Kontrolle.
Um mehr über das Javascript Date-Objekt zu erfahren, ist dies eine gute Ressource: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
quelle
Ich denke, die ursprüngliche Frage kann leicht beantwortet werden, indem etwas übersehen wird: ein einfacher String-Split. Die zurückgegebene Zeit ist eine Textzeichenfolge. Teilen Sie sie einfach im Trennzeichen ":" auf und setzen Sie die Zeichenfolge nach Ihren Wünschen wieder zusammen. Keine Plug-Ins, keine komplizierten Skripte. und los geht's:
quelle
Obwohl dies eine ältere Frage ist, hatte ich kürzlich selbst dieselbe und fand eine einfachere Lösung mit regulären Ausdrücken und der Funktion zum Ersetzen von Zeichenfolgen als weitere Alternative (keine Notwendigkeit für externe js-Bibliotheken oder Vertrauen in die ECMAScript-Internalisierungs-API). ::
Bei diesem Ansatz wird ein Regex-Look-Ahead verwendet, um das: ss AM / PM-Ende der Zeichenfolge zu erfassen, und der: ss-Teil wird durch ein Leerzeichen ersetzt, wobei der Rest der Zeichenfolge unberührt bleibt. (Wörtlich gesagt: "Suchen Sie einen Doppelpunkt mit zwei Ziffern und einem Leerzeichen, gefolgt von AM oder PM, und ersetzen Sie den Doppelpunkt, zwei Ziffern und den Leerzeichenbereich durch nur ein Leerzeichen.)
Dieser Ausdruck / Ansatz funktioniert nur für Gebietsschemas in den USA und in den USA. Wenn Sie auch ein ähnliches Ergebnis mit beispielsweise britischem Englisch (en-GB) erzielen möchten, das kein AM / PM verwendet, ist ein anderer regulärer Ausdruck erforderlich.
Basierend auf der Beispielausgabe des ursprünglichen Fragestellers gehe ich davon aus, dass sie sich hauptsächlich mit dem amerikanischen Publikum und dem Zeitschema der USA befassten.
quelle
Konvertieren Sie einfach das Datum in eine Zeichenfolge und verketten Sie dann die gewünschten Teilzeichenfolgen.
quelle
toLocaleTimeString
Gibt in jedem Browser abhängig von den Ländereinstellungen unterschiedliche Zeichenfolgen zurück. Sie können sich nicht auf diese Positionen verlassen, da Sie in den Browsern anderer Personen unterschiedliche, wahrscheinlich fehlerhafte Ergebnisse erhalten.