Article
· Juin 26 2m de lecture

Fonction permettant d'obtenir les dates de début et de fin d'un mois

Si vous voulez obtenir le premier et le dernier jour d'un mois, j'ai une ClassMethod à vous proposer (version 2, correction d'une erreur trouvée par Eduard) :

ClassMethod GetMonthPeriods(InitialYear As %Integer, EndYear As %Integer) As %Status
{
    set sc = $$$OK
    set result = []
    For CurrentYear = InitialYear:1:EndYear {
        For CurrentMonth = 1:1:12 {
            set item = {}
            If CurrentMonth < 10 {
                Set CurrentMonthStr = "0"_CurrentMonth
            } Else {
                Set CurrentMonthStr = ""_CurrentMonth
            }
            Set item.StartDate = CurrentYear_"-"_CurrentMonthStr_"-01T00:00:00"
            Set NextMonth = CurrentMonth + 1
            If NextMonth = 13 {
                Set item.EndDate = CurrentYear_"-12-31T23:59:59"
            } Else {
                Set NextDate = $SYSTEM.SQL.Functions.TODATE(CurrentYear_"-"_NextMonth_"-01","YYY-MM-DD")
                Set NextDate = $INCREMENT(NextDate,-1)
                set item.EndDate = $ZDate(NextDate,3)_"T23:59:59"
            }
            
            Do result.%Push(item)
        }
    }
    Write result.%ToJSON()

    Return sc
}

$SYSTEM.SQL.Functions.TODATE convertit une chaîne en date et $INCREMENT permet d'incrémenter ou de décrémenter un jour à partir d'une date. Lorsque j'appelle cette méthode ..GetMonthPeriods(2022,2022) j'obtiens ceci :

[
    {
        "StartDate": "2022-01-01T00:00:00",
        "EndDate": "2022-01-31T23:59:59"
    },
    {
        "StartDate": "2022-02-01T00:00:00",
        "EndDate": "2022-02-28T23:59:59"
    },
    {
        "StartDate": "2022-03-01T00:00:00",
        "EndDate": "2022-03-31T23:59:59"
    },
    {
        "StartDate": "2022-04-01T00:00:00",
        "EndDate": "2022-04-30T23:59:59"
    },
    {
        "StartDate": "2022-05-01T00:00:00",
        "EndDate": "2022-05-31T23:59:59"
    },
    {
        "StartDate": "2022-06-01T00:00:00",
        "EndDate": "2022-06-30T23:59:59"
    },
    {
        "StartDate": "2022-07-01T00:00:00",
        "EndDate": "2022-07-31T23:59:59"
    },
    {
        "StartDate": "2022-08-01T00:00:00",
        "EndDate": "2022-08-31T23:59:59"
    },
    {
        "StartDate": "2022-09-01T00:00:00",
        "EndDate": "2022-09-30T23:59:59"
    },
    {
        "StartDate": "2022-10-01T00:00:00",
        "EndDate": "2022-10-31T23:59:59"
    },
    {
        "StartDate": "2022-11-01T00:00:00",
        "EndDate": "2022-11-30T23:59:59"
    },
    {
        "StartDate": "2022-12-01T00:00:00",
        "EndDate": "2022-12-31T23:59:59"
    }
]
Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer