将1或2天添加到日期字符串

时间:2011-08-10 15:47:17

标签: javascript date

我有一个字符串,可能是date = "10/08/2011";英文时间风格。

它是一个普通的字符串,所以我需要能够添加1或2天。

我尝试了一些但无法解决的问题,因为我通常是一个不是JavaScript的PHP人员。

非常感谢任何帮助。

由于

更新

为什么这看起来太难了,我现在已经坚持了一个小时......我想给代码一个简单的字符串,这是mm / dd / yyyy - 10/08/2011我想要回来像11/08/2011

为什么这么难?这就是为什么我讨厌javascript而不喜欢PHP: - (

6 个答案:

答案 0 :(得分:14)

这并不复杂:

//convert string to date
var dattmp = "10/08/2011".split('/').reverse().join('/');
var nwdate =  new Date(dattmp);

// to add 1 day use:
nwdate.setDate(nwdate.getDate()+1);

//to retrieve the new date use
[nwdate.getDate(),nwdate.getMonth()+1,nwdate.getFullYear()].join('/');

//all in one:
function dateAddDays( /*string dd/mm/yyyy*/ datstr, /*int*/ ndays){
  var dattmp = datstr.split('/').reverse().join('/');
  var nwdate =  new Date(dattmp);
  nwdate.setDate(nwdate.getDate()+ndays || 1);
  return [ zeroPad(nwdate.getDate(), 10)
          ,zeroPad(nwdate.getMonth()+1, 10)
          ,nwdate.getFullYear() ].join('/');
}

//function to add zero to date/month < 10
function zeroPad(nr, base){
  var len = (String(base).length - String(nr).length) + 1;
  return len > 0? new Array(len).join('0') + nr : nr;
}

//examples
console.log(dateAddDays("10/08/2011"));     //=> 11/08/2011
console.log(dateAddDays("10/08/2011", -5)); //=> 05/08/2011

如果你真的想要它简单 - 不使用日期对象:

var datePlus1 = '10/08/2011'.split('/');
datePlus1[0] = Number(datePlus1[0])+1;
console.log(datePlus1.join('/')); //=> 11/08/2011

Here's一个可能有用的小型日期时间处理对象。

答案 1 :(得分:9)

要添加2天:

var theDate = new Date("10/28/2011");
theDate.setDate(theDate.getDate()+2);

答案 2 :(得分:0)

您需要将String转换为Date-Object。 通过这个,您可以调用.getDate()和setDate() - 函数来修改日期。

但要实现这一目标,日期必须采用以下格式之一:

  1. MM / DD / YYYY
  2. YYYY / MM / DD
  3. MM-DD-YYYY
  4. MMMM dd,yyyy
  5. MMM dd,yyyy
  6. 所以,也许你必须在转换之前在字符串中切换日期和月份,因为我不确定月份或日期是否是你的第一个数字。

    对于欧洲日期,您可以使用以下内容将字符串更改为正确的格式:

    var date = "10/08/2011";
    var eurDate = date.substr(3,2) + "/" + date.substr(0,2) + "/" + date.substr(6);
    

    可以帮助您解决此问题的链接:

    http://programming.top54u.com/post/Javascript-Convert-String-to-Date.aspx

    http://www.adp-gmbh.ch/web/js/date/add_days.html

    编辑:

    JSFiddle的一个例子: http://jsfiddle.net/4W8yM/11/

答案 3 :(得分:0)

试试这个

var date =  new Date("10/08/2011");

date = new Date(date.setDate(date.getDate()+1));//1 represents 1 day to add so you specify as per your need

var dateStr = date.getDay() + '/' + (date.getMonth() + 1) + '/' + date.getUTCFullYear();

答案 4 :(得分:0)

您必须强制将字符串强制解释为date-month-year或month-date-year,否则将取决于用户的设置。

您可以从字符串中组合日期以确保日期 - 月份格式:

Date.fromDM=function(string){
    var A= string.match(/([1-9]\d*)/g);
    if(A.length!== 3) throw 'bad date'; 
    return new Date(A[2]*1, A[1]-1, A[0]*1);
}
Date.fromMD=function(string){
    var A= string.match(/([1-9]\d*)/g);
    if(A.length!== 3) throw 'bad date'; 
    return new Date(A[2]*1, A[0]-1, A[1]*1);
}



/*  Date.fromDM('10,08,2011')
return value: (Date)
Wed Aug 10 2011 00:00:00 GMT-0400 (Eastern Daylight Time)
*/

/*Date.fromMD('10,08,2011')
return value: (Date)
Sat Oct 08 2011 00:00:00 GMT-0400 (Eastern Daylight Time)
*/

答案 5 :(得分:0)

我试过这个并得到了结果。

var dat = new Date('2018-03-16');

//use toISOString() to get the string value 2018-03-16T16:38:00.000Z
//substring(0,10) gets 2018-03-16
//reverse to gets 16-03-2018
var ret = dat.toISOString().substring(0, 10).split('-').reverse()

//rearranging to whatever format you want
var t = ret[0];
ret[0] = ret[1];
ret[1] = t;

//result
console.log(ret.join('/'))