Kennt jemand eine einfache Möglichkeit, ein Date zu nehmen (z. B. Heute) und X Tage zurück zu gehen?
Zum Beispiel, wenn ich das Datum 5 Tage vor dem heutigen Tag berechnen möchte.
javascript
date
datetime
Jonhobbs
quelle
quelle
Antworten:
Versuchen Sie so etwas:
Beachten Sie, dass dies das Datumsobjekt ändert und den Zeitwert des aktualisierten Datums zurückgibt.
quelle
new Date(new Date().setDate(new Date().getDate()-5))
- Das wird vor 5 Tagen sein. Übergeben Sie im Beispiel der Antwort ein neues Datum, um ein Datumsobjekt zu erhalten. Alsonew Date(d)
ist was du willst.setDate(-1)
wird das Datum auf den letzten Tag des Monats setzentoString
Methoden wietoISOString
,toDateString
etc.Wenn Sie in Ihrer Webanwendung viele Manipulationen an Kopfschmerzen durchführen , erleichtert DateJS Ihnen das Leben erheblich:
http://simonwillison.net/2007/Dec/3/datejs/
quelle
getTime()
undsetTime()
sind Millisekunden seit der Epoche. Es sollte keine Rolle spielen, ob die Zeit eine Jahresgrenze überschreitet.Es geht ungefähr so:
quelle
function getDaysAgo(b){var a=new Date;a.setDate(a.getDate()-b);return a};
dann nurvar daysAgo45 = getDaysAgo(45);
Ich habe festgestellt, dass getDays + X nicht über Tages- / Monatsgrenzen hinweg funktioniert. Die Verwendung von getTime funktioniert, solange Ihr Datum nicht vor 1970 liegt.
quelle
Holen Sie sich moment.js. Alle coolen Kids benutzen es. Es hat mehr Formatierungsoptionen usw. Wo
Optional! Konvertieren Sie in JS Date obj für die Winkelbindung.
Optional! Format
quelle
Ich habe diesen Prototyp für Datum erstellt, damit ich negative Werte zum Subtrahieren von Tagen und positive Werte zum Hinzufügen von Tagen übergeben kann.
Um es zu benutzen, kann ich einfach schreiben:
quelle
d.setDate(d.getDate() + days)
sowohl positive als auch negative Werte für Tage verwenden , um Tage zu addieren bzw. zu subtrahieren. Und es sollte auf der Instanz funktionieren (wie andere Date-Methoden), keine Kopie erstellen und zurückgeben.Einige der vorhandenen Lösungen waren nah beieinander, aber nicht ganz genau das, was ich wollte. Diese Funktion arbeitet sowohl mit positiven als auch mit negativen Werten und behandelt Grenzfälle.
quelle
Ich rechne gerne in Millisekunden. Also benutze
Date.now()
und wenn Sie es formatiert mögen
HINWEIS: Funktioniert
Date.now()
nicht in älteren Browsern (zB IE8, glaube ich). Polyfill hier .UPDATE Juni 2015
@socketpair wies auf meine Schlamperei hin. Wie er / sie sagt "Einige Tage im Jahr haben 23 Stunden und einige 25 aufgrund von Zeitzonenregeln".
Um dies zu erweitern, weist die obige Antwort Ungenauigkeiten bei der Sommerzeit auf, wenn Sie den LOKALEN Tag vor 5 Tagen in einer Zeitzone mit Änderungen bei der Sommerzeit berechnen möchten
Date.now()
Sie jetzt die aktuelle LOKALE Zeit haben, oder.toString()
die das lokale Datum zurückgibt und daher nicht mit demDate.now()
Basisdatum in UTC kompatibel ist .Es funktioniert jedoch, wenn Sie alle Berechnungen in UTC durchführen, z
A. Sie möchten das UTC-Datum vor 5 Tagen von JETZT (UTC)
B. Sie beginnen mit einem anderen UTC-Basisdatum als "jetzt"
Date.UTC()
quelle
Ich finde ein Problem mit der Methode getDate () / setDate () darin, dass sie zu leicht alles in Millisekunden umwandelt und die Syntax manchmal für mich schwer zu befolgen ist.
Stattdessen möchte ich die Tatsache abarbeiten, dass 1 Tag = 86.400.000 Millisekunden.
Also, für Ihre spezielle Frage:
Klappt wunderbar.
Ich benutze diese Methode die ganze Zeit, um rollierende 30/60/365-Tage-Berechnungen durchzuführen.
Sie können dies leicht extrapolieren, um Zeiteinheiten für Monate, Jahre usw. zu erstellen.
quelle
Teilen Sie Ihr Datum in Teile auf und geben Sie dann ein neues Datum mit den angepassten Werten zurück
Denken Sie daran, dass die Monate auf Null basieren, die Tage jedoch nicht. dh neues Datum (2009, 1, 1) == 01. Februar 2009, neues Datum (2009, 1, 0) == 31. Januar 2009;
quelle
Ohne die zweite Variable zu verwenden, können Sie 7 durch Ihre Rücken x Tage ersetzen:
quelle
quelle
Ich habe eine Funktion zur Datumsmanipulation erstellt. Sie können beliebig viele Tage, Stunden, Minuten addieren oder subtrahieren.
Rufen Sie diese Funktion nun auf, indem Sie Parameter übergeben. Hier ist beispielsweise ein Funktionsaufruf zum Abrufen des Datums vor 3 Tagen ab heute.
quelle
quelle
Die häufigsten Antworten führten zu einem Fehler in meinem Code, bei dem am ersten des Monats ein zukünftiges Datum für den aktuellen Monat festgelegt wurde. Folgendes habe ich getan:
quelle
Eine einfache Möglichkeit, Daten zu verwalten, ist die Verwendung Moment.js
Sie können verwenden
add
. BeispielDokumente http://momentjs.com/docs/#/manipulating/add/
quelle
Ich mag das Folgende, weil es eine Zeile ist. Nicht perfekt mit DST-Änderungen, aber normalerweise gut genug für meine Bedürfnisse.
quelle
Für mich haben alle Kombinationen mit dem folgenden Code-Snipplet gut funktioniert. Das Snippet ist für die Angular-2-Implementierung vorgesehen. Wenn Sie Tage hinzufügen müssen, übergeben Sie eine positive Anzahl von Tagen, wenn Sie die negative Anzahl von Tagen subtrahieren müssen
quelle
Ich habe eine gute Laufleistung veraltet. Js:
http://www.datejs.com/
Nett!
Website enthält diese Schönheit:
quelle
Wenn Sie sowohl eine Anzahl von Tagen subtrahieren als auch Ihr Datum in einem für Menschen lesbaren Format formatieren möchten, sollten Sie ein benutzerdefiniertes
DateHelper
Objekt erstellen , das ungefähr so aussieht:(siehe auch diese Geige )
quelle
Siehe folgenden Code, subtrahieren Sie die Tage vom aktuellen Datum. Stellen Sie den Monat außerdem nach dem subtrahierten Datum ein.
quelle
Wenn Sie das Datum einstellen, wird das Datum in Millisekunden konvertiert. Sie müssen es also wieder in ein Datum konvertieren:
Diese Methode berücksichtigt auch Neujahrswechsel etc.
quelle
Sie können Javascript verwenden.
Für PHP
Hoffe es wird dir helfen.
quelle
Ich habe in Millisekunden umgerechnet und Tage abgezogen, sonst ändern sich Monat und Jahr nicht und sind logisch
Hoffnung hilft
quelle
quelle
Verwenden der modernen JavaScript-Funktionssyntax
quelle
Versuchen Sie so etwas
currDate kann ein beliebiges Datum sein
Das Limit kann die Differenz in der Anzahl der Tage sein (positiv für die Zukunft und negativ für die Vergangenheit).
quelle
Dies gibt Ihnen die letzten 10 Tage Ergebnis 110% Arbeit Sie werden keine Art von Problem bekommen
Sie können die Subtraktionstage entsprechend Ihren Anforderungen ändern
quelle
quelle
quelle