2016-07-20 217 views
0

我嘗試到30天減爲當前日期,我總是得到一個負數一天值。最重要的是返回日期的格式,必須是YYYY-MM-DD獲取日期前30天當前日期

我知道有這樣類似的問題,但我無法找到一個解決方案。

這是我迄今所做..

var date = new Date(); 

    var dd = date.getDate()-30; 
    var mm = date.getMonth()+1; 

    var yyyy = date.getFullYear(); 
    if(dd<10){ 
    dd='0'+dd 
    } 
    if(mm<10){ 
    mm='0'+mm 
    } 
    var dateTo = yyyy+'-'+mm+'-'+dd; 

上面的代碼將返回2016-07- -10爲今天的日期,而不是2016年7月21日

+0

只是爲了看看我猜中了:你今天想 - 30天? – n0m4d

+1

如果您對使用庫還不錯 - 請查看http://momentjs.com/。正是出於這樣那樣的問題 – Weedoze

+0

@ n0m4d非常有用的,是的,我想從當天 – Valip

回答

5

因爲你是從與日期對象沒有連接的數字中減去。改變它只會改變數字。你需要從日期本身減去日子。

var today = new Date(); 
 
var past30 = new Date(); 
 
past30.setDate(today.getDate()-30); 
 
console.log(past30);

+0

我已經嘗試過這樣做,它返回我'錯誤:你爲什麼要使用2個日期對象不能調用控制檯 – Valip

+1

null.'的方法「子」? – 4castle

+0

@ 4castle因爲我覺得它? – epascarello

0
var d = new Date(); 
d.setDate(d.getDate()-30); 
d = d.toISOString().slice(0,10); 
+0

你能解釋你做了什麼,爲什麼? – depperm

+0

@depperm toISOString()以格式爲「YYYY-MM-DDTHH:mm:ss.sssZ」的字符串形式返回日期對象,然後使用切片提取日期。那裏不需要更換。 – havr

+0

其中最好包括解釋你的答案中的任何代碼 – depperm

相關問題