在给定日期添加1天

时间:2014-01-02 07:15:13

标签: javascript date

请考虑以下情况: -

var d = new Date(); 

var month = d.getMonth()+1;
var day = d.getDate();

var output = d.getFullYear() + '-' +
    ((''+month).length<2 ? '0' : '') + month + '-' +
    ((''+day).length<2 ? '0' : '') + day;//alert(output);

var incept_dt = new Date();
var incept_dt = "2014-01-04";

我想在incept_dt中增加1天。我的预期incep_dt将是: -

var incept_dt = "2014-01-05";

我在下面尝试过: -

incept_dt = incept_dt.setDate(incept_dt.getDate() + 1);

但是低于错误: -

TypeError:incept_dt.getDate不是函数 incept_dt = incept_dt.setDate(incept_dt.getDate()+ 1);

请提出任何建议。提前谢谢。

8 个答案:

答案 0 :(得分:1)

尝试这种方式:

var incept_dt = new Date(2014, 1, 4);
var daysToAdd = 1;
incept_dt.setDate( incept_dt.getDate() + daysToAdd );

要更改日期的显示格式,您可以尝试以下方式:

var fullYear = incept_dt.getFullYear().toString();
var _year = fullYear.substring( 2 );

var _month = incept_dt.getMonth().toString();
_month = _month.lenth > 1 ? _month : ( '0' + _month );

var _date = incept_dt.getDate().toString();
_date = _date.length > 1 ? _date : ( '0' + _date );

// use this wherever you want.  
var date_to_display = _year + "-" + _month + "-" + _date;

//alert( date_to_display );

答案 1 :(得分:1)

添加24小时怎么样?

var date = new Date;
date = new Date(+date + 3600000 * 24);

或者,使用get/setDate

var date = new Date;
date.setDate(date.getDate() + 1);

这是一个格式化日期对象的函数:

function format(date) {
    return [
        date.getFullYear(),
        ('0' + (date.getMonth() + 1)).slice(-2),
        ('0' + date.getDate()).slice(-2)
    ].join('-')
}

用法示例(以YYYY-MM-DD格式提供今天的日期):

format(new Date) // "2014-01-02"

所有在一起:

var date = '2014-01-04';
date = new Date(date);
date.setDate(date.getDate() + 1);
date = format(date); // "2014-01-05"

答案 2 :(得分:1)

因此,根据我的问题的确切答案,我会做以下事情: -

var incept_dt = new Date(); 
var incept_dt = new Date("2014-01-04");

incept_dt = incept_dt.setDate(incept_dt.getDate() + 1);
incept_dt = new Date(incept_dt);
var incept_month = (incept_dt.getMonth()+1);
var incept_day = incept_dt.getDate();
incept_dt = incept_dt.getFullYear() + '-' + 
           ((''+incept_month).length<2 ? '0' : '') +incept_month + '-' +
           ((''+incept_day).length<2 ? '0' : '') + incept_day;

注意: - 为了转换到时间,我从@Ravinder的帖子中得到概念。

答案 3 :(得分:0)

因为你的变量是字符串而不是日期对象。

尝试:

var today = new Date();
var tomorrow = new Date();
tomorrow.setDate(today.getDate()+1);

这是您更新的代码:

var incept_dt= new Date('2014-05-01');
incept_dt.setDate(incept_dt.getDate() + 1);

发布后编辑

编辑后仍然是一个字符串而不是日期:

var incept_dt = new Date();
var incept_dt = "2014-01-04";

你初始化日期然后把它变成一个字符串。

答案 4 :(得分:0)

您需要将incept_dt从字符串转换为日期功能之前的日期。

incept_dt = new Date(incept_dt); //Convert to Date
incept_dt.setDate(incept_dt.getDate()+1); //Add one day
incept_dt = incept_dt.getUTCFullYear() + '-' + (incept_dt.getUTCMonth() + 1) + '-' + incept_dt.getUTCDate(); //Convert back to string

答案 5 :(得分:0)

因为incept_dtstring变量,而不是Date类型。因此,首先将其转换为Date类型,然后添加日期。

首先,您必须解析您的string日期到Date

var incept_dt = "2014-01-05".split("-");
var in_date = new Date(incept_dt[0], incept_dt[1], incept_dt[2])

现在您可以执行Date方法操作。

in_date.setDate(in_date.getDate() + 1)

最后,

var incept_dt = "2014-01-05".split("-");
var in_date = new Date(incept_dt[0], incept_dt[1], incept_dt[2])
in_date.setDate(in_date.getDate() + 1)
console.log(in_date)
var yy = in_date.getFullYear();
var mm = in_date.getMonth() + 1;
var dd = in_date.getDate();
var final_Date = yy + "-"+ mm + "-"+ dd; 

JSFiddle

答案 6 :(得分:0)

因为incept_dt是一个变量,所以将它转换为日期

var date = new Date(incept_dt); // convert string to date

当您使用ISO格式YYYY-MM-DD时,您不必担心格式化

如果你想要格式,你可以

var dd = date.getDate();
var mm = date.getMonth() + 1;
var y = date.getFullYear();

var som_date = dd + '/'+ mm + '/'+ y;

然后添加这样的日子

var numberOfDaysToAdd = 6;
date.setDate(date + numberOfDaysToAdd); 

答案 7 :(得分:0)

只需使用moment.js,您就不必跳过这么多箍。

// create a moment from your start date string
var m = moment('2014-01-04', 'YYYY-MM-DD');

// add a day
m.add(1, 'days');

// get a new string
var s = m.format('YYYY-MM-DD');

// or if you need a Date object
var dt = m.toDate();