User Tools

Site Tools


periods.js
/*
 *
 * Copyright 2020 Oleg Borodin  <borodin@unix7.org>
 *
 */
 
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 декабря
periods.js
>
/*
 *
 * Copyright 2020 Oleg Borodin  <borodin@unix7.org>
 *
 */
 
let moment = require('moment')
moment.locale('ru')
 
let year = 2020
let quarter = 1
 
let startDate = ''
switch (quarter) {
    case 1:
        startDate = year + '-01-01T00:00:00'
        break
    case 2:
        startDate = year + '-01-04T00:00:00'
        break
    case 3:
        startDate = year + '-01-07T00:00:00'
        break
    case 2:
    default:
        startDate = year + '-01-10T00: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 weekDiff = moment.duration(diff).asWeeks()
 
for (let i = 0; i <= weekDiff; i++) {
    let startWeekMoment = startMoment.clone().add(i, 'week')
    let endWeekMoment = startMoment.clone().add(i + 1, 'week').add(-1, 'day')
    console.log(startWeekMoment.format('DD') + '-' + endWeekMoment.format('DD MMMM'))
}