function startAndNowTime(start = '2021-10-1', sign = '-') {
const now = new Date()
let nowYear = now.getFullYear()
let startYear = +start.slice(0, 4)
const nowMonth = now.getMonth()
let year = []
let month = []
let manyYear = +nowYear - startYear
let res = []
const quarter = {
'1': '第一季度',
'2': '第二季度',
'3': '第三季度',
'4': '第四季度'
}
// 1. 获取从start 到 现在 经历的年份
if (manyYear >= 1) { // 间隔一年以上
for(let i = 0; i < manyYear + 1; i++) {
year.push(nowYear-i)
}
} else {
year.push(+nowYear)
}
// 2. 获取当前年度已过了几个月,截止到当月
for (let i = 0; i < +nowMonth + 1; i++ ) {
month.push(i+1)
}
// 3. 拼装数据 [ { year: 2021, month: [ { code: '2021-1', name: '2021-1' } ] } ]
/** 添加月 */
year.forEach((numyear, index) => {
res[index] = { year: numyear, month: [], quarter: [] }
if (index > 0) {
for(let i = 0; i < 12; i++) {
res[index].month.push({ code: `${numyear}${sign}${i+1}`, name: `${numyear}${sign}${i+1}` })
}
return
}
month.forEach(numMonth => {
res[index].month.push({ code: `${numyear}${sign}${numMonth}`, name: `${numyear}${sign}${numMonth}` })
})
})
/** 添加季度 */
res.forEach((item, index) => {
let manyQuarter = 4
if (index === 0) {
const long = item.month.length
if (long <= 12) {
manyQuarter = 4
}
if (long <= 9) {
manyQuarter = 3
}
if (long <= 6) {
manyQuarter = 2
}
if (long <= 3) {
manyQuarter = 1
}
}
console.log(manyQuarter, index)
for (let i = 0; i < manyQuarter; i++) {
res[index].quarter[i] = { code: `${item.year}${sign}${i+1}`, name: `${item.year}${sign}${quarter[i+1]}` }
}
})
return res
}
startAndNowTime()
录入指定开始时间, 输出开始到当前的指定年月季
于 2022-04-11 15:23:40 首次发布