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 回答