/*
*
* Author, Copyright: Oleg Borodin <onborodin@gmail.com>
*
*/
let moment = require('moment')
moment.locale('ru')
function getMonths(year, quarter) {
let startDate = ''
switch (quarter) {
case 1:
startDate = year + '-01-01T00:00:00'
break
case 2:
startDate = year + '-04-01T00:00:00'
break
case 3:
startDate = year + '-07-01T00:00:00'
break
case 4:
default:
startDate = year + '-10-01T00:00:00'
break
}
let startMoment = moment(startDate)
let endMoment = startMoment.clone().add(3, 'month').add(-1, 'day')
startMoment = startMoment.clone().startOf('month')
endMoment = endMoment.clone().endOf('month')
let diff = endMoment.diff(startMoment)
let monthNumber = moment.duration(diff).asMonths()
let moments = []
for (let i = 0; i <= monthNumber; i++) {
item = {
startMoment: startMoment.clone().add(i, 'month'),
endMoment: startMoment.clone().add(i + 1, 'month').add(-1, 'day')
}
moments.push(item)
}
return moments
}
function getWeeks(year, quarter) {
let startDate = ''
switch (quarter) {
case 1:
startDate = year + '-01-01T00:00:00'
break
case 2:
startDate = year + '-04-01T00:00:00'
break
case 3:
startDate = year + '-07-01T00:00:00'
break
case 4:
default:
startDate = year + '-10-01T00:00:00'
break
}
let startMoment = moment(startDate)
let endMoment = startMoment.clone().add(3, 'month').add(-1, 'day')
startMoment = startMoment.clone().startOf('week')
endMoment = endMoment.clone().endOf('week')
let diff = endMoment.diff(startMoment)
let weekNumber = moment.duration(diff).asWeeks()
let moments = []
for (let i = 0; i <= weekNumber; i++) {
item = {
startMoment: startMoment.clone().add(i, 'week'),
endMoment: startMoment.clone().add(i + 1, 'week').add(-1, 'day')
}
moments.push(item)
}
return moments
}
let year = 2020
let quarter = 4
console.log("months:")
let monthMoments = getMonths(year, quarter)
monthMoments.forEach((item, i) => {
console.log(item.startMoment.format("DD") + '-' + item.endMoment.format("DD MMMM"))
})
console.log("weeks:")
let weekMoments = getWeeks(year, quarter)
weekMoments.forEach((item, i) => {
console.log(item.startMoment.format("DD") + '-' + item.endMoment.format("DD MMMM"))
})
//$ node ./periods-m.js
//months:
//01-31 октября
//01-30 ноября
//01-31 декабря
//01-31 января
//weeks:
//28-04 октября
//05-11 октября
//12-18 октября
//19-25 октября
//26-01 ноября
//02-08 ноября
//09-15 ноября
//16-22 ноября
//23-29 ноября
//30-06 декабря
//07-13 декабря
//14-20 декабря
//21-27 декабря