使用powershell获取当前月份的天数

使用powershell获取当前月份的天数,powershell,powershell-2.0,Powershell,Powershell 2.0,我需要检索当前月份的天数,尽管我进行了研究,但在powershell中还没有找到任何可以这样做的。以下是我目前为获得我想要的结果而构建的内容。有更好的方法吗 请注意,我仅限于Powershell #check to see if this is a leap year function LYC { if ([System.DateTime]::isleapyear((Get-Date).Year)) { $Globa

我需要检索当前月份的天数,尽管我进行了研究,但在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}
        }
    }


在我看来,这可能很容易:

$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)

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

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

我建议$numDays=((获取日期-第3个月)-(获取日期-第2个月));也就是说,.NET永远是另一条伟大的路线+1听起来不错,你只需完成
[datetime]::DaysInMonth([datetime]::Now.year,[datetime]::Now.month)
是和
(获取日期)。month
(获取日期)。year
或:
[datetime]::DaysInMonth((日期)。year,(日期)。month)
-总之,获得准确结果的好方法:+1;o) 关于:
(获取日期-第5个月)-(获取日期-第4个月)
在我的计算机上给出29.D 23h 59m 59s。@JPBlanc我只有在第一次使用您的代码时才得到相同的结果。。。所有下一次重试都给30天…奇怪的是,我每次只能用(get Date-Month 5)-(get Date-Month 4)得到30天,但是如果我做我原来的((get Date-Month 5)-(get Date-Month 4)),那么它将随机抛出29d.59m.59s。我正在添加我在上面发现的内容
((get-date $date -Day 1 -hour 0 -Minute 0 -Second 0).AddMonths(1).AddSeconds(-1)).Day