Wie subtrahiere ich eine Woche von diesem Datum in jquery?

73

Das ist mein Code

var myDate = new Date();
todaysDate = ((myDate.getDate()) + '/' + (myDate.getMonth()) + '/' + (myDate.getFullYear()));
$('#txtEndDate').val(todaysDate);

Ich brauche den Wert von txtEndDate = das heutige Datum - eine Woche

Unendlichkeit
quelle
Dies hat nichts mit jQuery zu tun.
Dan Dascalescu

Antworten:

174

Sie können ein Datum mit ändern setDate. Die Korrektur auf neue Monate / Jahre usw. wird automatisch korrigiert.

var oneWeekAgo = new Date();
oneWeekAgo.setDate(oneWeekAgo.getDate() - 7);

Und dann rendern Sie das Datum in eine beliebige Zeichenfolge.

David Hedlund
quelle
Es stellt das Datum wie folgt ein. Di Dez 06 2011 18:24:34 GMT + 0530 (India Standard Time). Ich brauche das Datum in diesem Format ... 13/11/2011 Wie mache ich das jetzt? ? PLZ helfen .. danke
Unendlichkeit
2
Sie können es genau so formatieren, wie Sie möchten. Der obige Code dient zum Abrufen des Datums, das genau in einer Woche liegt. Sie können es dann genau so formatieren, wie Sie es gerade todaysDateverwenden ...getDate() + '/' .... Beachten Sie, dass dies getMonth()0-basiert ist, weshalb Sie 11für Dezember dort bekommen ...
David Hedlund
@Asad Ich kann Davids hier bestätigen - es funktioniert über Monatsgrenzen hinweg
James Cushing
Danke dafür :)
vin
21

Ich würde so etwas tun

var myDate = new Date();
var newDate = new Date(myDate.getTime() - (60*60*24*7*1000));
Jean-Philippe Gire
quelle
7
Ich würde es auch tun, aber seien Sie sich der lustigen Effekte bewusst, wenn die beiden Daten zu beiden Seiten der Sommerzeit liegen.
Alnitak
Riesige Hilfe! Ich mag diese Methode etwas mehr. Ich bin allerdings besessen von Einzeiler. Also benutze ich das: var date = new Date(new Date().getTime() - (60*60*24*7*1000));
Shaidar
Das brauchst du nicht .getTime(). Das funktioniert genauso gut : new Date(new Date() - 60 * 60 * 24 * 7 * 1000).
Dan Dascalescu
@ DanDascalescu würde das nicht eine ganz neue Datumsgenerierung aufrufen? nicht, dass es je nach Anwendungsfall einen großen Unterschied machen würde, aber ich könnte mir vorstellen, dass weniger Klassenkonstruktionen besser sind
Cacoon
8
var now = new Date();
now.setDate(now.getDate() - 7); // add -7 days to your date variable 
alert(now); 
Sandeep GB
quelle
@ DanDascalescu, Nun, es gab einen Unterschied von ~ 2 Minuten zwischen den Posts (vor 5 Jahren)!
Sandeep GB
1

Check out Date.js. Es ist wirklich ordentlich!

http://www.datejs.com/

Hier sind einige Möglichkeiten, dies mit Date.js zu tun:

// today - 7 days
// toString() is just to print it to the console all pretty

Date.parse("t - 7 d").toString("MM-dd-yyyy");     // outputs "12-06-2011"
Date.today().addDays(-7).toString("MM-dd-yyyy");  // outputs "12-06-2011"
Date.today().addWeeks(-1).toString("MM-dd-yyyy"); // outputs "12-06-2011"

Schauen Sie sich auch Moment.js an ... Ich denke, die beiden Bibliotheken ergänzen sich gegenseitig :)

http://momentjs.com/

Hristo
quelle
1
Sie brauchen keine Bibliothek für so etwas Einfaches, geschweige denn eine komplexe wie momentjs.
Dan Dascalescu
1
@ DanDascalescu, richtig, aber das rechtfertigt keine Ablehnung.
Hristo
-1

in der Reihe

new Date(new Date().setDate(new Date().getDate() - 7))

seine @ David Hedlund Antwort, ich mache es einfach inline

Ryzex
quelle
1
Bitte erläutern Sie Ihre Lösung und geben Sie einen Kontext an. Andernfalls hilft es anderen nicht, die Ihre Antwort lesen
mishsx
Dadurch werden drei DateObjekte erstellt, von denen zwei weggeworfen werden, sodass sie sich in einer Zeile befinden.
Heretic Monkey