2

今月の日数を取得する必要があり、調査にもかかわらず、powershell でそれを行うものをまだ見つけていません。以下は、私が望む結果を得るために現在構築しているものです。それを行うより良い方法はありますか?

私はPowershellに限定されていることに注意してください

    #check to see if this is a leap year
    function LYC
    {
        if ([System.DateTime]::isleapyear((Get-Date).Year))
        {
            $Global:LY = True
        }
    }
    #Get the number of days in current month
    function fNOD
    {
        $MNum = (Get-Date).Month
        switch ($MNum)
        {
            1   {$Global:DaysInMonth=31}
            2   {
                    LYC
                    if (LY)
                    {
                        $Global:DaysInMonth=29
                    } else {
                        $Global:DaysInMonth=28
                    }
                }
            3   {$Global:DaysInMonth=31}
            4   {$Global:DaysInMonth=30}
            5   {$Global:DaysInMonth=31}
            6   {$Global:DaysInMonth=30}
            7   {$Global:DaysInMonth=31}
            8   {$Global:DaysInMonth=31}
            9   {$Global:DaysInMonth=30}
            10  {$Global:DaysInMonth=31}
            11  {$Global:DaysInMonth=30}
            12  {$Global:DaysInMonth=31}
        }
    }
4

3 に答える 3

13

http://msdn.microsoft.com/en-us/library/system.datetime.daysinmonth.aspx

# static int DaysInMonth(int year, int month)
[DateTime]::DaysInMonth(2013, 3)
于 2013-03-18T03:37:04.763 に答える
1

に保存されている任意の日付に対してそれが必要であると仮定します$date

((get-date $date -Day 1 -hour 0 -Minute 0 -Second 0).AddMonths(1).AddSeconds(-1)).Day
于 2013-05-14T06:57:57.807 に答える
0

これは一見簡単そうに思えます:

$numDays = ((Get-Date -Month 3) - (Get-Date -Month 2))

2 月は 28 日、7 月から 6 月を引くと 30 日になります。

以下で説明するように、29d、23h、59m、またはその他の正しくない値を出す奇妙な整数の丸めが時々行われるようです。

これは一貫しているようです:

$monthLess = Get-Date -Month 4
$NumDays = (Get-Date -Month 5).Subtract($monthLess)
于 2013-03-18T03:39:31.710 に答える