2013-10-01 56 views
0

我知道一個Java日曆,你可以回到以前的日期,但我怎麼用javascript日期做到這一點?假設我想要倒退三個月,我該怎麼做?我假設必須有一些邏輯來做到這一點,而不是隻做一個setMonth(),因爲回滾3個月可能會讓你回到上一年,所以今年也需要更新。操縱javascript日期對象

回答

1

你爲什麼不使用日期庫,比如日期的一個處理。 JS

http://datejs.com

Date.add(-3).month();

+2

date.js很好,但請注意它已被廢棄:http://stackoverflow.com/tags/datejs/info –

+0

感謝您的輸入Daniel –

0

MomentJS是一個非常適合日期操作的JavaScript庫。使用MomentJS,你可以這樣做:

// Subtract 3 months from the current moment (now) 
moment().subtract('months', 3); 

如果必須使用JavaScript Date對象,你可以使用setMonth(),但它是不可靠的(如你所提到的)。舉個例子:

// Get the next and previous month from now (first day of the month) 
var now = new Date(); 
var futureMonth = now.setMonth(now.getMonth() + 1, 1); 
var pastMonth = now.setMonth(now.getMonth() - 1, 1); 

請注意,您需要指定的第二個參數的一天設置爲1,這將防止跳過一個月「下一個」月(例如一個月增加了2014年1月31日將結果在2014年3月3日,如果你省略第二個參數)。

0

任何側翻日期操作到一個新的週期(即新的年,月,周,日等)自動

var d = new Date(); 
    -> Tue Oct 01 2013 14:12:21 GMT+1000 (EST) 

d.setMonth(d.getMonth() - 3); 
    -> Mon Jul 01 2013 14:13:43 GMT+1000 (EST) 

d.setMonth(d.getMonth() - 10); 
    -> Sat Sep 01 2012 14:14:31 GMT+1000 (EST) 
-1

不,你不必擔心滾動支持的一年。只需設置月份並保留JS渲染機器。

var date = new Date(); 
date.setMonth(-10); //+ increase the month or - decrease 
alert(date); 

JSFiddle

+0

'-10'不會從當前的-10個月減去 – Phil

+0

@Phil是的。我只是向他展示一個例子,回滾這個月會自動照顧一年。 '-3 => 2013年7月'。希望你明白我的觀點。 – Praveen

0

使用GET一個月,你可以從0-11中獲得的價值,所以如果你想回去〜3個月剛chekc如果本月沒有。大於3,如果大於3,則不需要更改年份,否則將年份減1除以1