はじめに
プレミアムな方々、こんにちは。
プロパー社員が帰宅する中、絶賛運用作業してまして…
そんな鬱々とした気持ちをPowerShellに吐き出しました。
環境
- PowerShell2.0
ソースコード
プレミアムフライデー.ps1
<#
プレミアムフライデーの日付を求める
引数で与えられた年月に対応するプライムフライデーの日付をyyyy/mm/dd形式で出力する
[引数]0:年
1:月
#>
# 引数チェック
if ($args.Length -ne 2) {
"引数は[年(YYYY形式)] [月(MM形式)]で指定してください。"
exit 1
}
try {
$datetime = New-Object DateTime $args[0], $args[1], 1
} catch {
"引数は[年(YYYY形式)] [月(MM形式)]で指定してください。"
exit 1
}
if (($args[0] -lt 2017) -or (($args[0] -eq 2017) -and ($args[1] -eq 1))) {
"プレミアムフライデーの導入は2017年2月からです。"
exit 1
}
$year = $args[0]
$month = $args[1]
# プレミアムフライデー判定
$monthEndDay = $datetime.AddMonths(1).AddDays(-1)
$monthEndDayOfWeekNumber = [Int32]$monthEndDay.DayOfWeek
$fridayNumber = [Int32][DayOfWeek] "Friday"
if ($monthEndDayOfWeekNumber -eq $fridayNumber) {
$monthEndDay.ToShortDateString()
} elseif ($monthEndDayOfWeekNumber -gt $fridayNumber) {
$monthEndDay.AddDays(-($monthEndDayOfWeekNumber - $fridayNumber)).ToShortDateString()
} else {
$monthEndDay.AddDays(-($monthEndDayOfWeekNumber + 2)).ToShortDateString()
}
exit 0
おわりに
日本のみんなにプレミアムな金曜日が来るといいですね。