通过从Javascript中的特定日期减去X天数来查找日期

时间:2009-07-27 12:09:49

标签: javascript date

我想通过从JavaScript中减去特定日期的X天数来查找日期。我的JavaScript函数接受2个参数。一个是日期值,另一个是需要减去的天数。

例如,我将我的论点日期定为2009年7月27日,我将我的另一个论点作为3传递。所以我想计算2009年7月27日前3天的日期。所以我们得到的日期是2009年7月24日这在JavaScript中是如何实现的。谢谢你的帮助。

9 个答案:

答案 0 :(得分:81)

简单地:

yourDate.setDate(yourDate.getDate() - daysToSubtract);

答案 1 :(得分:22)

function date_by_subtracting_days(date, days) {
    return new Date(
        date.getFullYear(), 
        date.getMonth(), 
        date.getDate() - days,
        date.getHours(),
        date.getMinutes(),
        date.getSeconds(),
        date.getMilliseconds()
    );
}

答案 2 :(得分:9)

永远不要寻求这个解决方案 yourDate.setDate(yourDate.getDate() - daysToSubtract);

如果您的日期是任何月份的第1天并且您想要删除某些日子,则不会有效。

取而代之的是以下解决方案,它始终有效

var newDate = new Date(yourDate.getTime() - (days * 24 * 60 * 60 * 1000));

答案 3 :(得分:2)

我在这里发布一个答案,并以特定格式返回日期。

首先,您可以获取当前日期 10/08/2013 ,如下所示

function Cureent_Date() {
    var today_GMT = new Date();
    var dd = today_GMT.getDate();
    var mm = today_GMT.getMonth() + 1; //January is 0!
    var yyyy = today_GMT.getFullYear();
    if (dd < 10) {
        dd = '0' + dd
    }
    if (mm < 10) {
        mm = '0' + mm
    }
    current_date = mm + '/' + dd + '/' + yyyy;
    alert("current_date"+current_date);

    Back_date();
}

现在根据 X 天数

取回日期
function Back_date()
{    
    var back_GTM = new Date(); back_GTM.setDate(back_GTM.getDate() - 2); // 2 is your X
    var b_dd = back_GTM.getDate();
    var b_mm = back_GTM.getMonth()+1;
    var b_yyyy = back_GTM.getFullYear();
    if (b_dd < 10) {
        b_dd = '0' + b_dd
    }
    if (b_mm < 10) {
        b_mm = '0' +b_mm
    }

    var back_date=  b_mm + '/' + b_dd + '/' + b_yyyy;
    alert("back_date"+back_date);
}

所以,今天是10/08/2013所以它会返回10/06/2013

Check Live Demo here 希望这个答案能帮到你。

答案 4 :(得分:1)

这是一个例子,但这不做任何检查(例如,如果你在2009/7/1上使用它,它将使用否定日或抛出错误。

function subDate(o, days) {
// keep in mind, months in javascript are 0-11
return new Date(o.getFullYear(), o.getMonth(), o.getDate() - days);;
}

答案 5 :(得分:0)

这就是我要做的。请注意,您可以简化表达式,我只是将其写出来表明您将天数乘以一天中的毫秒数。

 var newDate = new Date( yourDate.getTime() - (days * 24 * 60 * 60 * 1000) );

答案 6 :(得分:0)

我写的另一个选项是:

DP_DateExtensions Library

如果您想做的只是一次计算,那可能有点过头了,但是如果您要进行更多日期操作,您可能会发现它很有用。

支持日期/时间格式,日期数学(加/减日期部分),日期比较,日期解析等。

答案 7 :(得分:0)

  

这是参考上述答案   检查这个小提琴

https://jsfiddle.net/uniyalguru/azh65aa0/

function Cureent_Date() {
var today_GMT = new Date();
var dd = today_GMT.getDate();
var mm = today_GMT.getMonth() + 1; //January is 0!
var yyyy = today_GMT.getFullYear();
if (dd < 10) {
    dd = '0' + dd
}
if (mm < 10) {
    mm = '0' + mm
}
current_date = mm + '/' + dd + '/' + yyyy;

答案 8 :(得分:0)

我创建了一个用于日期操作的函数。您可以添加或减去任何天数,小时数,分钟数。

function dateManipulation(date, days, hrs, mins, operator) {
    date = new Date(date);
    if (operator == "-") {
       var durationInMs = (((24 * days) * 60) + (hrs * 60) + mins) * 60000;
       var newDate = new Date(date.getTime() - durationInMs);
    } else {
       var durationInMs = (((24 * days) * 60) + (hrs * 60) + mins) * 60000;
       var newDate = new Date(date.getTime() + durationInMs);
    }
   return newDate;
}

现在,通过传递参数来调用此函数。例如,这是一个函数调用,用于获取从今天起3天之前的日期。

var today = new Date();
var newDate = dateManipulation(today, 3, 0, 0, "-");