Javascript 向日期字符串添加1或2天
我有一个字符串,可能是Javascript 向日期字符串添加1或2天,javascript,date,Javascript,Date,我有一个字符串,可能是date=“10/08/2011”英语时间样式 这是一个简单的字符串,所以我需要能够添加1或2天到它 我已经尝试了一些方法,但无法解决问题,因为我通常是一个PHP的家伙,而不是JavaScript 非常感谢您的帮助 谢谢 背风 更新 为什么这看起来这么难,我已经被困在这上面一个小时了。。。。。我想给代码一个简单的字符串,它是mm/dd/yyy-10/08/2011,我想返回类似11/08/2011的值 为什么这么难??这就是为什么我讨厌javascript而更喜欢PHP:-
date=“10/08/2011”代码>英语时间样式
这是一个简单的字符串,所以我需要能够添加1或2天到它
我已经尝试了一些方法,但无法解决问题,因为我通常是一个PHP的家伙,而不是JavaScript
非常感谢您的帮助
谢谢
背风
更新
为什么这看起来这么难,我已经被困在这上面一个小时了。。。。。我想给代码一个简单的字符串,它是mm/dd/yyy-10/08/2011,我想返回类似11/08/2011的值
为什么这么难??这就是为什么我讨厌javascript而更喜欢PHP:-(您需要将字符串转换为日期对象。
使用此函数,您可以调用.getDate()和setDate()函数来修改日期
但要实现这一点,日期必须采用以下格式之一:
年月日
yyyy/MM/dd
年月日
年月日
年月日
所以,在转换之前,您可能必须在字符串中切换日期和月份,因为我不确定月份或日期是否是您的第一个数字
对于欧洲日期,您可以使用以下内容将字符串更改为正确的格式:
var date = "10/08/2011";
var eurDate = date.substr(3,2) + "/" + date.substr(0,2) + "/" + date.substr(6);
可以帮助您完成此任务的链接:
编辑:
JSFiddle提供了一个示例:
要添加2天:
var theDate = new Date("10/28/2011");
theDate.setDate(theDate.getDate()+2);
试试这个
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();
并不是那么复杂:
//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
可能有用的小型datetime处理对象。必须强制执行一个字符串,将其解释为日期-月-年或月-日-年,否则将取决于用户的设置
可以从字符串中组合日期,以确保日期-月份格式:
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)
*/
我试了一下,结果出来了
var-dat=新日期('2018-03-16');
//使用toISOString()获取字符串值2018-03-16T16:38:00.000Z
//子串(0,10)得到2018-03-16
//与2018年3月16日相反
var ret=dat.toISOString().substring(0,10).split('-').reverse()
//重新排列到您想要的任何格式
var t=ret[0];
ret[0]=ret[1];
ret[1]=t;
//结果
console.log(ret.join('/')
从外观上看,这给了我unix中的时间戳:-(argh-太接近了,但我需要能够以欧式风格完成它…dd/mm/yyyyy有什么想法吗?你可以用子字符串尝试我的方法(编辑到我的答案中)。它可以切换日期和月份。另一方面,Kooilnc的版本也可以正常工作,如果您使用的是欧洲日期,它会反转字符串,将其转换为有效格式。@ShankerSangoli-这只会给我0/10/2011-我正要给up@Lee:之前只需使用简单函数转换字符串即可。My或Kooilnc的解决方案ld可以很好地将其转换为正确的格式->从外观上看,这只是在unix中给了我时间戳:-(要返回字符串,可以执行var theDateString=(theDate.getMonth()+1)+'/'+theDate.getDate()+'/'+theDate.getCfullyear()
非常感谢Kooilnc,这正是我在寻找的注意,如果你跨越一个月或一年的过渡,上面的简单解决方案将不起作用。你真的想使用Date对象…@Mike,当然-这就是为什么使用Date对象是有意义的。我建议不要使用datePlus1
解决方案,但这是一种可能性。加法的优先级高于逻辑OR,因此您需要在其中添加一些括号:nwdate.setDate(nwdate.getDate()+(ndays | 1));这是否回答了您的问题?
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)
*/