gpt4 book ai didi

javascript - 向日期字符串添加 1 或 2 天

转载 作者:搜寻专家 更新时间:2023-11-01 04:44:38 29 4
gpt4 key购买 nike

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

它是一个纯字符串,所以我需要能够为其添加 1 或 2 天。

我已经尝试了一些方法但无法解决问题,因为我通常是 PHP 专家而不是 JavaScript。

非常感谢任何帮助。

谢谢

更新

为什么这看起来这么难,我已经坚持了一个小时了......我想给代码一个简单的字符串,它是 mm/dd/yyyy - 10/08/2011我想要 2011 年 11 月 8 日之类的东西

为什么这么难??这就是为什么我讨厌 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 &gt; ${
str2Date(`3/15/2013T12:22`, `mdy`)}`,
`<code>str2Date(\`15-2013-03 12:22\`, \`dym\`)\</code>\n &gt; ${
str2Date(`15-2013-03 12:22`, `dym`)}`,
`<code>str2Date(\`15/3/2013\`, \`dmy\`)</code>\n &gt; ${
str2Date(`15/3/2013`, `dmy`)}`,
`<code>str2Date(\`2013/03/15\`)</code>\n &gt; ${
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>

关于javascript - 向日期字符串添加 1 或 2 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7013738/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com