我有一个字符串,可能是date = "10/08/2011";
英文时间风格。
它是一个普通的字符串,所以我需要能够添加1或2天。
我尝试了一些但无法解决的问题,因为我通常是一个不是JavaScript的PHP人员。
非常感谢任何帮助。
由于
利
更新
为什么这看起来太难了,我现在已经坚持了一个小时......我想给代码一个简单的字符串,这是mm / dd / yyyy - 10/08/2011我想要回来像11/08/2011
为什么这么难?这就是为什么我讨厌javascript而不喜欢PHP: - (
答案 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() - 函数来修改日期。
但要实现这一目标,日期必须采用以下格式之一:
所以,也许你必须在转换之前在字符串中切换日期和月份,因为我不确定月份或日期是否是你的第一个数字。
对于欧洲日期,您可以使用以下内容将字符串更改为正确的格式:
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('/'))