Es wundert mich, dass das Date-Objekt von JavaScript keinerlei Add-Funktion implementiert.
Ich möchte einfach eine Funktion, die dies kann:
var now = Date.now();
var fourHoursLater = now.addHours(4);
function Date.prototype.addHours(h) {
// how do I implement this?
}
Ich möchte einfach ein paar Hinweise in eine Richtung.
Muss ich String-Parsing durchführen?
Kann ich setTime verwenden?
Wie wäre es mit Millisekunden?
So was:
new Date(milliseconds + 4*3600*1000 /*4 hrs in ms*/)?
Das scheint aber wirklich hackisch - und funktioniert es überhaupt?
javascript
datetime
Jeff Fleischbällchen Yang
quelle
quelle
Prüfung:
quelle
var date = new Date(2012, 10, 22, 23, 0, 1); date.toString(); // Thu Nov 22 2012 23:00:01 GMT+0100 (CET) date.setHours(date.getHours() + 1); date.toString(); // Fri Nov 23 2012 00:00:01 GMT+0100 (CET)
Es funktioniert auch gut mit setMinutes ()Der folgende Code dient zum Hinzufügen von 4 Stunden zum Datum (Beispiel des heutigen Datums).
Es wird kein Fehler verursacht, wenn Sie versuchen, 4 bis 23 hinzuzufügen (siehe Dokumentation ):
quelle
setTime
odersetUTCHour
.Es ist wahrscheinlich besser, die addHours-Methode unveränderlich zu machen, indem Sie eine Kopie des Date-Objekts zurückgeben, als dessen Parameter zu mutieren.
Auf diese Weise können Sie eine Reihe von Methodenaufrufen verketten, ohne sich um den Status kümmern zu müssen.
quelle
add*
häufig zum Mutieren des Objekts selbst verwendet wird.add
wird häufig in der .NET Framework-DateTime
Klasse verwendet und hat die gleiche Bedeutung wie das+
(Plus) in Math.currentDate.addHours(1)
<- Aus meinem Programmierinstinkt erwarte ich, dass sich dercurrentDate
Wert ändert, in Ihrer Implementierung jedoch nicht. Warumadd
Die von kennebec vorgeschlagene Version schlägt beim Wechsel von oder zu DST fehl, da die eingestellte Stundennummer festgelegt ist.
wird unabhängig von den Besonderheiten des Zeitsystems
h
Stunden hinzufügenthis
. Die Methode von Jason Harwig funktioniert ebenfalls.quelle
Sie können die Bibliothek momentjs http://momentjs.com/ verwenden .
quelle
Ich denke auch, dass das ursprüngliche Objekt nicht geändert werden sollte. Um zukünftige Arbeitskräfte zu sparen, gibt es hier eine kombinierte Lösung, die auf den Antworten von Jason Harwig und Tahir Hasan basiert :
quelle
Es gibt ein Add in den Datejs Bibliothek.
Und hier sind die JavaScript-Datumsmethoden . kennebec erwähnte weise getHours () und setHours ();
quelle
Überprüfen Sie, ob es nicht bereits definiert ist. Andernfalls wird es im Date-Prototyp definiert:
quelle
Eine andere Möglichkeit, dies zu handhaben, besteht darin, das Datum in Unixtime (Epoche) zu konvertieren, dann das Äquivalent in (Milli) Sekunden hinzuzufügen und es dann zurück zu konvertieren. Auf diese Weise können Sie Tag- und Monatsübergänge verarbeiten, z. B. 4 bis 21 Stunden hinzufügen, was am nächsten Tag, 01:00 Uhr, erfolgen sollte.
quelle
Versuchen Sie Folgendes, um eine einfache Funktion zum Hinzufügen / Entfernen von Stunden / Minuten in Javascript zu erhalten:
Dies kann ohne Parameter verwendet werden, um die aktuelle Zeit abzurufen
oder mit Parametern, um die Zeit mit den hinzugefügten Minuten / Stunden zu erhalten
Auch negative Zeit funktioniert
Diese Funktion gibt ein Array von zurück
quelle
SPRBRN ist korrekt. Um den Anfang / das Ende des Monats und des Jahres zu berücksichtigen, müssen Sie in Epoche und zurück konvertieren.
So machen Sie das:
oder machen Sie es in einer Zeile (wobei die Variablennamen die gleichen wie oben sind:
quelle
Dies ist eine einfache Möglichkeit, inkrementierte oder dekrementierte Datenwerte zu erhalten.
quelle
Ein bisschen chaotisch, aber es funktioniert!
Bei einem Datumsformat wie diesem: 2019-04-03T15: 58
Ihre Ausgabe wäre: 2019-04-03T16: 58
quelle