2012-08-14 113 views
2

我有一個低於JS那裏我得到的是用戶允許從後端腳本輸入的最高單日期:使用Javascript - 從當前日期前一個月計算

var max_date = new Date(pdate + " " + ptime); 

其中PDATE和分組時間獲取從腳本。

現在我需要設置最小日期比MAX_DATE少1個月

if (max_date.getMonth() == 0) 
subtractyear = 1; 
var min_date = new Date(Date.UTC(max_date.getFullYear() - subtractyear,max_date.getMonth() - 1,max_date.getDate(),max_date.getHours(),0,0)); 

我的問題是,如果MAX_DATE爲三月31日 - 然後將MIN_DATE被結轉到2月28日或2月29日或二月31還是2月30日?

如果形成的日期是不正確的日期 - 比如說2月30日,我該如何糾正這個問題?

回答

6

簡單的題目由1月份會得到一個有效的日期 - 永遠不會setMonth方法返回一個無效Date對象(同setDatesetYearDate構造函數):

var date = new Date(2012, 02, 31); // 2012-03-31 
date.setMonth(date.getMonth() - 1); // This gets 2012-03-02 

我不很清楚你預計的日期,前一個月的最後一天或者只是提前一個月的日子

+1

謝謝。我需要在max_date之前30天的日期。因此,如果max_date是3月31日,那麼最小日期用戶可以輸入2月28日(如果不是閏年),否則2月29日或相應的1個月比max_date更少?我明白,它會總是計算出正確的日期 – Prakash 2012-08-14 09:27:55

+0

只需嘗試'date.setDate(date.getDate() - 30)'會得到預期的結果 – otakustay 2012-08-14 09:29:45

+0

我有2個用戶輸入日期 - max_date和min_date兩個我需要 - min_date應該比max_date少1個月。那麼將min_date.setDate(max_date.getDate() - 30)的工作?所以var min_date = new Date(Date.UTC(max_date.getFullYear() - subtractyear,max_date.getMonth() - 1,max_date.getDate(),max_date.getHours(),0,0));如果max_date是3月31日,將會是正確的日期嗎? – Prakash 2012-08-14 09:32:10

相關問題