Ich habe dieses Skript erstellt, um das Datum 10 Tage im Voraus im Format TT / MM / JJJJ zu berechnen:
var MyDate = new Date();
var MyDateString = new Date();
MyDate.setDate(MyDate.getDate()+10);
MyDateString = MyDate.getDate() + '/' + (MyDate.getMonth()+1) + '/' + MyDate.getFullYear();
Ich muss das Datum mit führenden Nullen in der Tag- und Monatskomponente anzeigen lassen, indem ich diese Regeln zum Skript hinzufüge. Ich kann es nicht zum Laufen bringen.
if (MyDate.getMonth < 10)getMonth = '0' + getMonth;
und
if (MyDate.getDate <10)get.Date = '0' + getDate;
Wenn mir jemand zeigen könnte, wo ich diese in das Skript einfügen soll, wäre ich sehr dankbar.
javascript
date
date-format
time-format
leading-zero
Julian Coates
quelle
quelle
Antworten:
Versuchen Sie Folgendes : http://jsfiddle.net/xA5B7/
BEARBEITEN:
Zur Erklärung
.slice(-2)
geben Sie uns die letzten beiden Zeichen der Zeichenfolge.Also egal was, wir können hinzufügen
"0"
den Tag oder den Monat und nur nach den letzten beiden fragen, da dies immer die beiden sind, die wir wollen.Also, wenn die
MyDate.getMonth()
Rückkehr9
, wird es sein:Wenn
.slice(-2)
wir das hinzufügen , erhalten wir die letzten beiden Zeichen:Aber wenn
MyDate.getMonth()
zurückkommt10
, wird es sein:Wenn Sie also hinzufügen
.slice(-2)
, erhalten Sie die letzten beiden Zeichen oder:quelle
MyDate.setDate(MyDate.getDate() + 20);
slice()
Technik in der akzeptierten Antwort etwa 1/10 Sekunde schneller ist als diepad()
Technik von @Aleross 1 Million Iterationen. jsFiddle . "Zahlen Sie Ihr Geld, treffen Sie Ihre Wahl".Hier ist ein Beispiel aus den Datumsobjektdokumenten im Mozilla Developer Network, das eine benutzerdefinierte "Pad" -Funktion verwendet, ohne dass der Number-Prototyp von Javascript erweitert werden muss. Die praktische Funktion, die sie als Beispiel geben, ist
Und unten wird es im Kontext verwendet.
quelle
pad
werden nur Zeichenfolgen ausgegeben.Die neue moderne Methode hierfür ist die Verwendung
toLocaleDateString
, da Sie damit nicht nur ein Datum mit der richtigen Lokalisierung formatieren können, sondern auch Formatoptionen übergeben können, um das gewünschte Ergebnis zu archivieren:Wenn Sie das erste Argument überspringen, wird stattdessen die Browsersprache erkannt. Alternativ können Sie auch
2-digit
die Jahresoption verwenden.Wenn Sie alte Browser wie IE10 nicht unterstützen müssen, ist dies der sauberste Weg, um die Arbeit zu erledigen. IE10 und niedrigere Versionen verstehen das Optionsargument nicht.
Hinweis: Darüber hinaus gibt es auch
toLocaleTimeString
die Möglichkeit, die Uhrzeit eines Datums zu lokalisieren oder zu formatieren.quelle
Sie können eine "str_pad" -Funktion definieren (wie in PHP):
quelle
Für Sie Menschen aus der Zukunft (ECMAScript 2017 und darüber hinaus)
Lösung
Erklärung
Das
String.prototype.padStart(targetLength[, padString])
fügt so viele wie möglichpadString
zumString.prototype
Ziel hinzu, so dass die neue Länge des Ziels isttargetLength
.Beispiel
quelle
.padStart(2, '0')
da der zweite Parameter eine Zeichenfolge ist, obwohl dies wahrscheinlich keine Rolle spielt, es sei denn, Sie verwenden TypeScript//in Benutzung:
quelle
Ich habe den kürzesten Weg gefunden, dies zu tun:
fügt allen einsamen, einstelligen Ziffern führende Nullen hinzu
quelle
quelle
Sie können den ternären Operator verwenden, um das Datum wie eine "if" -Anweisung zu formatieren.
Zum Beispiel:
Damit
Dies ähnelt einer if-Anweisung, bei der getDate () einen Wert kleiner als 10 zurückgibt, dann eine '0' + das Datum zurückgibt oder das Datum zurückgibt, wenn es größer als 10 ist (da wir den führenden Wert nicht hinzufügen müssen 0). Gleiches gilt für den Monat.
Bearbeiten: Ich habe vergessen, dass getMonth mit 0 beginnt, also habe ich +1 hinzugefügt, um dies zu berücksichtigen. Natürlich könnte man auch einfach d.getMonth () <9: sagen, aber ich dachte, die Verwendung von +1 würde das Verständnis erleichtern.
quelle
Es gibt einen anderen Ansatz, um dieses Problem mithilfe
slice
von JavaScript zu lösen .das
datestring
Rückgabedatum mit dem von Ihnen erwarteten Format: 2019-09-01Ein anderer Ansatz ist die Verwendung der
dateformat
Bibliothek: https://github.com/felixge/node-dateformatquelle
Erleichtern Sie sich das Leben und verwenden Sie Moment.js Beispielcode:
quelle
quelle
Sie können Optionen als Parameter zum Formatieren des Datums angeben. Der erste Parameter bezieht sich auf das Gebietsschema, das Sie möglicherweise nicht benötigen, und der zweite auf Optionen. Weitere Informationen finden Sie unter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
quelle
Ich habe die richtige Antwort auf diese Frage in eine Funktion eingeschlossen, die mehrere führende Nullen hinzufügen kann, aber standardmäßig 1 Null hinzufügt.
Dies ist auch ein Ansatz für die Arbeit mit Zahlen und nicht mehr als 2 Ziffern:
quelle
Eine weitere Option, bei der eine integrierte Funktion zum Auffüllen verwendet wird (was jedoch zu ziemlich langem Code führt!):
Und noch eine, die Strings mit regulären Ausdrücken manipuliert:
Aber sei dir bewusst, dass man das Jahr am Anfang und den Tag am Ende zeigen wird .
quelle
Wenn Sie die @ modiX-Antwort hinzufügen, funktioniert dies ... LASSEN SIE DAS NICHT als leer
quelle
Hier ist ein sehr einfaches Beispiel, wie Sie mit dieser Situation umgehen können.
quelle
Das Folgende zielt darauf ab, die Konfiguration zu extrahieren, sich anzuschließen
Date.protoype
und die Konfiguration anzuwenden.Ich habe ein verwendet
Array
, um Zeitblöcke zu speichern, und wenn ichpush()
this
alsDate
Objekt bin , gibt es mir die Länge zurück, die ich durchlaufen muss. Wenn ich fertig bin, kann ichjoin
denreturn
Wert verwenden.Dies scheint ziemlich schnell zu funktionieren: 0,016 ms
Demo: http://jsfiddle.net/tive/U4MZ3/
quelle
Ich würde meinen eigenen benutzerdefinierten Date-Helfer erstellen, der folgendermaßen aussieht:
(siehe auch diese Geige )
quelle
Fügen Sie eine Auffüllung hinzu, um - wo erforderlich - eine führende Null zuzulassen, und verketten Sie sie mit dem Trennzeichen Ihrer Wahl als Zeichenfolge.
quelle
Wie @John Henckel vorschlägt, erleichtert die Verwendung der toISOString () -Methode die Arbeit
quelle
quelle
Versuchen Sie dies für eine Grundfunktion, keine Bibliotheken erforderlich
quelle
quelle
Sie können String.slice () verwenden, das einen Abschnitt eines Strings extrahiert und als neuen String zurückgibt, ohne den ursprünglichen String zu ändern :
Sie können auch eine Bibliothek wie Moment.js verwenden, um das Datum zu formatieren:
quelle