【发布时间】:2019-09-29 22:02:44
【问题描述】:
我们认为我有以下日期:
from: 21/09/2019
to: 29/09/2019
我想要的结果是这样的:
[
{
"day": 21,
"month": 9,
"year": 2019
},
...
{
"day": 29,
"month": 9,
"year": 2019
}
]
如果我有这样的事情:
from: 21/09/2019
to: 7/10/2019
我想要的结果是这样的:
[
{
"day": 21,
"month": 9,
"year": 2019
},
...
{
"day": 30,
"month": 9,
"year": 2019
},
...
{
"day": 1,
"month": 10,
"year": 2019
}
{
"day": 7,
"month": 10,
"year": 2019
}
]
我想做的是在一个数组中打印开始日期和结束日期之间的所有天数。
我正在尝试这样的事情,但我遇到了一些问题:
let from = "23/09/2019";
let to = "7/10/2019";
function getDaysInMonth(month, year) {
return new Date(year, month, 0).getDate();
}
function calculate(from, to) {
let splitF = from.split("/");
let splitT = to.split("/");
let array = [];
let dF = parseInt(splitF[0]);
let dT = parseInt(splitT[0]);
let mF = parseInt(splitF[1]);
let mT = parseInt(splitT[1]);
let yF = parseInt(splitF[2]);
let yT = parseInt(splitT[2]);
let day, init, final;
while (true) {
if (mF === mT && yF === yT) {
day = dT - dF;
} else {
day = getDaysInMonth(mF, yF)-dF;
}
init = dF;
final = init + day;
Array.apply(null, { length: final + 1 })
.map(Number.call, Number)
.slice(init)
.reduce((prev, curr) => {
let obj = {
day: curr,
month: mF,
year: yF
};
array.push(obj);
return prev;
}, []);
if (mF === mT && yF === yT) break;
mF++;
dF = 1;
if (mF === 13) {
mF = 1;
yF++;
}
}
return array;
}
console.log(calculate(from, to));
【问题讨论】:
-
你看到this了吗?当你说问题时,你能描述一下你遇到的问题吗?
-
这是3题合一(解析、加1天、格式),之前都回答过很多很多次了。
标签: javascript date date-formatting date-parsing