2011-12-13 16 views
51

to jest mój kodJak odjąć jeden tydzień od tej daty w jquery?

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

muszę txtEndDate za wartość = dzisiejszą datę - tydzień

+0

To nie ma nic wspólnego z jQuery. –

Odpowiedz

128

można zmodyfikować datę używając setDate. To automatycznie koryguje przesunięcie na nowe miesięcy/lat itd

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

A potem idź do renderowania datę na ciąg znaków w każdej sprawie wolisz.

+0

jego ustawienie na datę .. Gru 06 2011 18:24:34 GMT + 0530 (czas standardowy w Indiach) .. Potrzebuję daty w tym formacie ... 13.11.2011 jak to zrobić teraz? plz help..thanks – Infinity

+2

Możesz sformatować go dokładnie tak, jak chcesz. Powyższy kod służy do uzyskania daty dokładnie za tydzień. Możesz następnie sformatować go dokładnie tak jak obecnie w 'todaysDate' używając' ... getDate() + '/' ... '. Zauważ, że 'getMonth()' jest oparte na 0, i dlatego dostajesz '11' na grudzień, tam ... –

+2

Czy to działa, jeśli przekroczysz granicę miesiąca? –

2

Wyjazd Date.js. Jest naprawdę schludny!

http://www.datejs.com/

Oto kilka sposobów, aby to zrobić za pomocą Date.js:

// 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" 

jako niepowiązane marginesie, należy sprawdzić Moment.js jak dobrze ... Myślę, że 2 biblioteki komplement siebie :)

http://momentjs.com/

+0

Nie potrzebujesz biblioteki na coś tak prostego jak to, nie mówiąc już o skomplikowanym takim jak instantjs. –

+0

@DanDascalescu, poprawne, ale to nie gwarantuje spadku. – Hristo

6
var now = new Date(); 
now.setDate(now.getDate() - 7); // add -7 days to your date variable 
alert(now); 
+0

To jest to samo, co zaakceptowana odpowiedź. –

+0

@DanDascalescu, Cóż, różnica między postami wynosi około 2 minuty (5 lat wstecz)! –

16

zrobiłbym coś takiego

var myDate = new Date(); 
var newDate = new Date(myDate.getTime() - (60*60*24*7*1000)); 
+7

ja też, ale bądź świadomy zabawnych efektów, jeśli obie daty są po obu stronach czasu letniego. – Alnitak

+0

Ogromna pomoc! Lubię tę metodę nieco więcej. Mam obsesję na punkcie jednokurtowych. Używam tego: 'var date = new Data (nowa data(). GetTime() - (60 * 60 * 24 * 7 * 1000));' – Shaidar

+0

Nie potrzebujesz '.getTime() '. Działa to równie dobrze: 'nowa data (nowa data() - 60 * 60 * 24 * 7 * 1000)'. –