指定した月のカレンダーを表示する
関数定義
function GetCalendar($year,$month)
{
$dayStart = New-Object DateTime $year,$month,1 # 1日
$dayEnd = $dayStart.AddMonths(1).AddDays(-1) # 末日
Write-Host (Get-Date -Format " yyyy年MM月 ")
Write-Host "日 月 火 水 木 金 土" -NoNewLine
# 日曜日まで戻る
$day = $dayStart
while($day.DayOfWeek -ne [DayOfWeek]::Sunday )
{
$day=$day.AddDays(-1)
}
for(; $day -le $dayEnd; $day=$day.AddDays(1))
{
# 日曜日なら次の行へ
if($day.DayOfWeek -eq [DayOfWeek]::Sunday)
{
Write-Host
}
# 日付を出力・前月の場合は空白を出力
if($day -ge $dayStart -and $day -le $dayEnd)
{
Write-Host ($day.Day.ToString().PadLeft(2)+" ") -NoNewLine
}`
else { Write-Host " " -NoNewline }
}
Write-Host
}
実行例
PS U:\> GetCalendar 2011 1
2011年01月
日 月 火 水 木 金 土
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
PS U:\>