使用powershell获取当月的天数

时间:2013-03-18 03:10:20

标签: powershell powershell-v2.0

我需要检索当月的天数,尽管我进行了研究,但我还没有找到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}
        }
    }

3 个答案:

答案 0 :(得分:11)

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

# static int DaysInMonth(int year, int month)
[DateTime]::DaysInMonth(2013, 3)

答案 1 :(得分:0)

在我看来,这可能看似简单:

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

二月28天,七月减六月给我30天。

如下所述,显然有时会出现一些奇怪的整数舍入,它会释放29d,23h,59m或其他不正确的东西。

这似乎是一致的:

$monthLess = Get-Date -Month 4
$NumDays = (Get-Date -Month 5).Subtract($monthLess)

答案 2 :(得分:0)

假设您希望它存储在$date中的任何日期:

((get-date $date -Day 1 -hour 0 -Minute 0 -Second 0).AddMonths(1).AddSeconds(-1)).Day