2016-07-20 221 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

相关问题