💧

日本の四半期を計算する関数

2022/09/17に公開

業務系の人はみんな持ってるはず。再発明をしている。

function Get-JpQuarter {
    Param(
        [DateTime]$Date = ( Get-Date ),
        [int]$AddQuarter = 0
    )

    $Date = $Date.AddMonths($AddQuarter * 3)

    $JpYear = $Date.Year
    $Q = [Math]::Floor(($Date.Month - 1) / 3)
    
    # 3ヶ月先~3ヶ月前までの月を列挙して同じQになるDateTimeだけをフィルタしている
    $Months = -2..3 `
        | foreach-object { $Date.AddMonths($_) } `
        | where-object { [Math]::Floor(($_.Month - 1) / 3) -eq $Q } `
        | foreach-object { [datetime]$_.ToString("yyyy/MM/01") } 

    if ($Date.Month -lt 4) {
        $JpYear -= 1
        $Q = 4
    }

    return [pscustomobject]@{
        JpYear = $JpYear
        Q = $Q
        Months = $Months
    }
}
GitHubで編集を提案

Discussion