Ich habe ein Startkalender-Eingabefeld und ein Endkalender-Eingabefeld. Wir möchten, dass die Standardeinstellungen das Kalender-Eingabefeld 30 Tage vor dem aktuellen Datum beginnen und das End-Kalender-Eingabefeld das aktuelle Datum ist. Hier ist mein Datum vars.
var today = new Date(),
dd = today.getDate(),
mm = today.getMonth(),
yyyy = today.getFullYear(),
month = ["January", "February", "March",
"April", "May", "June", "July", "August",
"September", "October" "November", "December"],
startdate = month[mm] + ", " + yyyy.toString();
Das Enddatum wäre so etwas wie var enddate = startdate - 30;
Offensichtlich wird dies nicht funktionieren.
Wenn das aktuelle Datum der 30. Dezember 2011 ist, möchte ich, dass das Startdatum der 1. Dezember 2011 lautet.
EDIT: Meine Frage wurde beantwortet ... irgendwie. Date.today();
und Date.today().add(-30);
arbeiten, aber ich brauche das Datum im Format von January 13, 2012
. Nicht Fri Jan 13 2012 10:48:56 GMT -055 (EST)
. Irgendeine Hilfe?
MEHR BEARBEITEN: Zum jetzigen Zeitpunkt ist es 2018. Verwenden Sie einfach Moment.js . Es ist das Beste.
quelle
Antworten:
Versuchen Sie es mit der hervorragenden Datejs-JavaScript-Datumsbibliothek (das Original wird nicht mehr gepflegt, sodass Sie möglicherweise stattdessen an dieser aktiv gepflegten Gabel interessiert sind ):
[Bearbeiten]
Siehe auch die hervorragende JavaScript-Datumsbibliothek von Moment.js :
quelle
moment( moment().subtract(30, 'days') ).format("YYYY-MM-DD")
moment()
Ansatz verwendet und dietoDate()
Methode angehängt , um das JavaScript-Datumsobjekt zurückzugewinnen. Vielen Dank!Versuche dies
Wie von @Neel angegeben, wird diese Methode im Javascript-Zeitstempelformat zurückgegeben. Um es wieder in ein Datumsobjekt zu konvertieren, müssen Sie das Obige an ein neues Datumsobjekt übergeben.
new Date(priorDate)
.quelle
new Date(priorDate)
setDate()
auf einemDate
Objekt. Es ist jedoch unmöglich zu diagnostizieren, ohne Ihren Code zu sehen.Hier ist eine hässliche Lösung für Sie:
quelle
Die
.getTime()
Methode gibt einen Standard-JS-Zeitstempel (Millisekunden seit dem 1. Januar 1970) zurück, für den Sie reguläre mathematische Operationen verwenden können, die direkt an das Date-Objekt zurückgegeben werden können.quelle
Holen Sie sich die nächsten 30 Tage ab heute
Holen Sie sich noch heute die letzten 30 Tage
quelle
Javascript kann damit ohne externe Bibliotheken umgehen.
quelle
Einfach.
(Using Vanilla JS)
ISOFormat?
quelle
Ich benutze date.js . Es handhabt dies leicht und kümmert sich um all die Schaltjahr-Unangenehmkeit.
quelle
Ich werde Moment js bevorzugen
quelle
Dies ist eine ES6-Version
quelle
Sie können dies einfach über eine Codezeile mit moment in Node JS tun. :) :)
Ich möchte kein UTC-Format, EASIER: P.
quelle
Wenn Sie nicht zu Momenten neigen, können Sie Folgendes verwenden:
let x = new Date()
x.toISOString(x.setDate(x.getDate())).slice(0, 10)
Grundsätzlich wird das aktuelle Datum (numerischer Wert des Datums des aktuellen Monats) abgerufen und dann der Wert festgelegt. Dann wird es in ein ISO-Format konvertiert, aus dem ich das rein numerische Datum (dh 23.09.2019) herausschneide.
Hoffe es hilft jemandem.
quelle
let today = new Date()
let last30Days = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 30)
last30Days
wird im Datumsobjekt seinquelle