Hey, Powershell! Given a date, can a script tell me the date that the Friday for that week occurs?
Here’s a script that – given a date – will report back the date that the Friday of that week falls on:
param ([system.datetime]$date = $([system.datetime]::now))
$intday = [int] $date.DayOfWeek
$intadder = 5 - $intday
$dateFriday = $date.AddDays( $intadder)
Write-Output "The friday of the given date is $dateFriday"
Let’s see how this script works The script begins by assigning the date from commandline or current date to a variable named $date.
Next we use the DayofWeek property to determine the day of the week for given date DayofWeek is going to return one of the following value
This gives us a value representing the day of the week; What we need to do now is programmatically determine the number of days between this date and the Friday of that week. That’s something we can do with a single line of code:
$intadder = 5 – $intDay
Confused? Don’t be; this actually makes sense. If you refer to the table you’ll see that Friday has a value of 5. If we take the value for Friday (5) and subtract the value for given date we will get the days to add to get Friday. That’s what we do with this line of code:
$dateFriday = $date.AddDays($intddder)
System.DateTime is a powerful class that allows you to do date manipulation very easily in PowerShell