-
Notifications
You must be signed in to change notification settings - Fork 896
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
给定起止日期,返回中间的所有月份 #159
Comments
// 给定起止日期,返回中间的所有月份
function getDate(dateStr = '', addMonth = 0) {
const [year, month] = dateStr.split('-');
return new Date(year, month - 1 + addMonth);
}
function formateDate(dateStr = new Date()) {
return `${dateStr.getFullYear()}-${String(dateStr.getMonth() + 1).padStart(2, 0)}`;
}
const getRangeMonth = (startDateStr = '', endDateStr = '') => {
const result = [];
let startTime = getDate(startDateStr) ? getDate(startDateStr, 1).getTime() : 0;
const endTime = getDate(endDateStr) ? getDate(endDateStr).getTime() : 0;
while (startTime < endTime) {
const curTime = new Date(startTime);
result.push(formateDate(curTime));
curTime.setMonth(curTime.getMonth() + 1);
startTime = curTime.getTime();
}
return result;
}
console.log(getRangeMonth("2018-08", "2018-12")); // [ '2018-09', '2018-10', '2018-11' ] |
function outPut(startMonth, endMonth) { console.log(outPut('2018-08', '2018-12'), 'outPut') |
function func(date1, date2) {
function getDate(dateStr) {
let [year, month] = dateStr.split('-').map(i => { return Number(i) })
return { year: year, month: month }
}
date1 = getDate(date1)
date2 = getDate(date2)
let arr = []
if (date1.year > date2.year || (date1.year === date2.year && date1.month > date2.month)) {
[date1, date2] = [date2, date1]
}
while (date1.year < date2.year || (date1.year === date2.year && date1.month < date2.month - 1)) {
if (date1.month === 12) {
date1.month = 1
date1.year++
} else {
date1.month++
}
arr.push({ year: date1.year, month: date1.month })
}
return arr.map(item => { return item.year + '-' + item.month })
}
console.log(func('2018-08', '2019-12')); |
let start = "2018-08",
end = "2018-12";
start = start.split("-");
end = end.split("-");
let year = 0,
res = [];
while (start[0] * 1 <= end[0] * 1) {
find();
}
console.log(res)
function find() {
let s = start[1]*1+1
let e = start[0] == end[0] ? end[1]-1 : 12;
for (let i = s; i <= e; i++) {
res.push(`${start[0]}-${i}`);
}
start = [start[0]*1+1,0]
} |
function genMonthArr(mStart = 1, mEnd = 12) {
let monthArr = [];
for (let month = mStart || 1; month <= mEnd; month++) {
monthArr.push(month);
}
return monthArr;
}
function monthsInBetween(start, end) {
let [yStart, mStart] = start.split("-").map((item) => parseInt(item));
let [yEnd, mEnd] = end.split("-").map((item) => parseInt(item));
let yArr = [];
// get Year Array
while (yStart <= yEnd) {
yArr.push(yStart);
yStart++;
}
let dtArr = [];
for (let year of yArr) {
// assign start and end
let mArr;
if (yArr.length === 1) {
mArr = genMonthArr(mStart, mEnd);
} else if (year === yArr[0]) {
mArr = genMonthArr(mStart);
} else if (year === yArr.slice(-1)[0]) {
mArr = genMonthArr(null, mEnd);
} else {
mArr = genMonthArr();
}
for (let month of mArr) {
dtArr.push(year + "-" + (month >= 10 ? month : "0" + month));
}
}
return dtArr;
} |
|
function getMonth(start, end) {
const [startYear, startMonth] = start.split("-").map((item) => Number(item));
const [endYear, endMonth] = end.split("-").map((item) => Number(item));
const yearDiff = endYear - startYear;
return Array.from({ length: endMonth - startMonth + 12 * yearDiff - 1 }).map(
(_, index) =>
[
startYear + Math.floor((index + startMonth) / 12),
(startMonth + index) % 12 + 1,
].join("-")
);
}
console.log(getMonth('2018-2', '2020-1')) |
|
The text was updated successfully, but these errors were encountered: