指定した月のカレンダーを表示する

関数定義

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:\>
inserted by FC2 system