skip to Main Content

Finding the Last Friday (or any weekday) of the Month in PowerShell

If there are less than 7 days left in the month, then it’s the last weekday of this type in this month.

function Is-LastWeekDayOfMonth([DateTime] $d) {
    return [DateTime]::DaysInMonth($d.Year, $d.Month) - $d.Day -lt 7
}

Similarly, finding the last specific weekday of the month involves finding the last weekday, and the difference between that weekday and the target weekday:

function Get-LastFridayOfMonth([DateTime] $d) {
    $lastDay = new-object DateTime($d.Year, $d.Month, [DateTime]::DaysInMonth($d.Year, $d.Month))
    $diff = ([int] [DayOfWeek]::Friday) - ([int]
    $lastDay.DayOfWeek)
    if ($diff -ge 0) {
        return $lastDay.AddDays(- (7-$diff))
    }
    else
    {
        return $lastDay.AddDays($diff)
    }
}

Chinh Do

I occasionally blog about programming (.NET, Angular, Node.js, Java, PowerShell, etc), gadgets, etc. See About for more info or reach me on Twitter or GitHub.

This Post Has One Comment
  1. Hi Chinh Do,
    I stumbled upon your script today.
    I was looking for something like this.
    There is just one minor thing about your script.
    In your If statement, you should use -gt in stead of -ge to return the correct value.

    Much appreciated!
    Martijn

Leave a Reply

Your email address will not be published. Required fields are marked *

Back To Top