Get the number of Days in the current month using powershell

10,564

Solution 1

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

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

Solution 2

Assuming you want it for any date stored in $date:

((get-date $date -Day 1 -hour 0 -Minute 0 -Second 0).AddMonths(1).AddSeconds(-1)).Day
Share:
10,564
Radagast
Author by

Radagast

I work as an IT administrator in a large company at the bottom of the food chain :-P

Updated on June 17, 2022

Comments

  • Radagast
    Radagast over 1 year

    I have the need to retrieve the number of days in the current month, and despite my research, I have yet to find anything in powershell that does it. The following is what I have currently built to get the result I want. is there a better way to do it?

    Please note that I am limited to 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}
            }
        }