向日期字符串添加1或2天
Adding 1 or 2 days to a date string
我有一个字符串,可能是date = "10/08/2011";
英文时间样式。
这是一个普通的字符串,所以我需要能够添加1或2天到它。
我已经尝试了一些事情,但不能工作,因为我通常是一个PHP的家伙不是JavaScript。
感谢您的帮助。
感谢李为什么这看起来这么难,我已经被困在这个一个小时了.....我想给代码一个普通字符串,即mm/dd/yyyy - 10/08/2011,我想要返回类似11/08/2011的东西
为什么这么难??这就是为什么我讨厌javascript而更喜欢PHP:-(
事情没那么复杂:
//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
如果你真的想让它简单-不使用日期对象:
console.log( '10/08/2011'
.split('/')
.map( (v, i) => i < 1 ? +v + 1 : v)
.join('/')
);
下面是一个将日期(时间)字符串转换为日期的小函数:
const log = Logger(document.querySelector(`pre`));
log(
`<code>str2Date('`3/15/2013T12:22'`, '`mdy'`)</code>'n > ${
str2Date(`3/15/2013T12:22`, `mdy`)}`,
`<code>str2Date('`15-2013-03 12:22'`, '`dym'`)'</code>'n > ${
str2Date(`15-2013-03 12:22`, `dym`)}`,
`<code>str2Date('`15/3/2013'`, '`dmy'`)</code>'n > ${
str2Date(`15/3/2013`, `dmy`)}`,
`<code>str2Date('`2013/03/15'`)</code>'n > ${
str2Date(`2013/03/15`)}` );
function str2Date(dateStr, ymd = `ymd`) {
ymd = [...ymd].reduce( (acc, v, i) => ({...acc, [v]: i}), {} );
const dt = dateStr.split(/[ T]/);
const [d, t] = [ dt[0].split(/[/-]/), dt[1] ];
return new Date( `${d[ymd.y]}-${d[ymd.m]}-${d[ymd.d]} ${t || ``}` );
}
function Logger(logEl) {
return (...args) => {
args.forEach(arg =>
logEl.appendChild(
Object.assign(document.createElement(`div`), {
innerHTML: `${arg}`,
className: `logEntry`
})
))
};
}
body {
font: normal 12px/16px verdana, arial;
}
.logEntry {
margin: 5px 0;
}
.logEntry:before {
content: '• ';
vertical-align: middle;
}
code {
background-color: #eee;
color: green;
padding: 1px 2px;
}
<pre></pre>
添加2天:
var theDate = new Date("10/28/2011");
theDate.setDate(theDate.getDate()+2);
必须强制将字符串解释为日期-月-年或月-日-年,否则将取决于用户的设置。
您可以从字符串中组装日期以确保日期-月格式:
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 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();
您需要将String转换为Date-Object。这样你就可以调用。getdate()和setDate()函数来修改日期。
但要实现这一点,日期必须采用以下格式之一:
- MM/dd/yyyy
- yyyy/MM/dd
- ;
- mm dd, yyyy
- MMM dd, yyyy
所以,也许你必须在转换之前在字符串中切换日和月,因为我不确定月或日是你的第一个数字。
对于欧洲日期,您可以像这样将字符串更改为正确的格式:
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/
我试了一下,得到了结果。
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('/'))
相关文章:
- 将到达日历中的2天添加到离开日历中
- 如何使用yyyymmdd格式在日期中添加n天,但排除周日
- 完整日历 - 如何在周视图中添加一天中的时间
- 添加1天后发布的日期
- 如何在 javascript 中使用 .datepicker 根据开始日期在结束日期中添加 +1 天
- 将一天添加到日期选择器值
- 如何在当前日期上添加1天
- 如何向用户添加一天's的输入
- 将X天添加到键入的日期中
- jquery日期选择器-将类添加到前17天
- 将字符串转换为日期并添加5天
- 添加获取当前日期,并在下一个值上添加5天
- 如何添加一个外部元素日期块的3天拖动n'用全压延机落下
- 在PDF中使用Javascript将一天添加到用户输入日
- 在日期字符串中添加5天
- jQuery添加7天的日期(输入和输出类型文本)
- 将事件时间添加到一天中-完整日历
- 当一天的开始和结束时间改变时,删除/添加正确的
's - Javascript..添加一天的日期和改变格式
- 将一天添加到日期边框案例