PowerShell カレンダーを表示したい(改良)
前回、カレンダーを表示する記事を書きました。
指定の日付に色をつけるように改良してみました。
関数Disp-Calendar2の引数に「年、月、色を付けたい日の始まり、日の終わり」を指定すると指定日に色がついたカレンダーが表示されます。
コードはこちら
function Disp-Calendar2($year,$month,$select_startday=-1,$select_endday=-1)
{
if($select_endday -eq -1){
$select_endday = $select_startday
}
Write-Host " $($year)年 $($month)月 "
Write-Host " 日" -ForegroundColor "red" -NoNewLine
Write-Host " 月 火 水 木 金" -NoNewLine
Write-Host " 土" -ForegroundColor "blue" -NoNewLine
$Startday = New-Object DateTime $year,$month,1 # 1日
$Endday = $Startday.AddMonths(1).AddDays(-1) # 末日
# 曜日別の色設定
$fgcolor=@{[DayOfWeek]::Sunday="red";[DayOfWeek]::Saturday="blue";[DayOfWeek]::monday="White";[DayOfWeek]::Tuesday="White";[DayOfWeek]::Wednesday="White";[DayOfWeek]::Thursday="White";[DayOfWeek]::Friday="White";}
# 日曜日からスタートする
$day = $Startday
while($day.DayOfWeek -ne [DayOfWeek]::Sunday ) {
$day=$day.AddDays(-1)
}
while($day -le $Endday) {
# 日曜日判定
if($day.DayOfWeek -eq [DayOfWeek]::Sunday) {
Write-Host "" # 日曜日なら改行
}
# 日付を出力
if(($day -ge $Startday) -and ($day -le $Endday)) {
if(($day.Day -ge $select_startday) -and ($day.Day -le $select_endday)) {
Write-Host ($day.Day.ToString().PadLeft(2)+" ") -ForegroundColor $fgcolor[$day.DayOfWeek] -BackgroundColor "Green" -NoNewLine
} else {
Write-Host ($day.Day.ToString().PadLeft(2)+" ") -ForegroundColor $fgcolor[$day.DayOfWeek] -NoNewLine
}
} else {
# 第一週の処理 日付が前月の場合は空白
Write-Host " " -NoNewline
}
$day=$day.AddDays(1)
}
Write-Host ""
}
Disp-Calendar2 2024 06 10 15
Disp-Calendar2 2024 05 16 16
前回記事はこちら
文字に色を付けるのはこちら
#PowerShell #コマンドレット #カレンダー #暦 #プログラミング学習 #プログラミング初心者 #業務効率化 #つくってみた