PoshCode Archive  Artifact [d458d5674a]

Artifact d458d5674a6cd65f2ea7139d054e8ac08100f55da0759a0b7154cbeeda9f2961:

  • File Get-Calendar.ps1 — part of check-in [23e3aba465] at 2018-06-10 13:42:29 on branch trunk — Prints calendar for specified month of year. Please, let me know about bugs. (user: greg zakharov size: 1557)

# encoding: ascii
# api: powershell
# title: Get-Calendar
# description: Prints calendar for specified month of year. Please, let me know about bugs.
# version: 0.1
# type: function
# author: greg zakharov
# license: CC0
# function: Get-Calendar
# x-poshcode-id: 4524
# x-archived: 2013-10-21T08:11:14
# x-published: 2013-10-16T16:43:00
#
#
Set-Alias cal Get-Calendar

function Get-Calendar {
  <#
    .LINK
        Follow me on twitter @gregzakharov
        http://msdn.microsoft.com/en-us/library/System.Globalization.aspx
        Get-Date
  #>
  param(
    [Parameter(Mandatory=$false,
               Position=0,
               ValueFromPipeline=$true)]
    [ValidateRange(1,12)]
    [Int32]$Month = (Get-Date -u %m),
    
    [Parameter(Mandatory=$false,
               Position=1,
               ValueFromPipeline=$true)]
    [ValidateScript({$_ -ge 2000})]
    [Int32]$Year = (Get-Date -u %Y)
  )
  
  begin {
    $arr = @()
    $cal = [Globalization.CultureInfo]::CurrentCulture.Calendar
    $dow = [Int32]$cal.GetDayOfWeek([DateTime]([String]$Month + ".1." + [String]$Year))
  }
  process {
    if ($dow -ne 0) {for ($i = 0; $i -lt $dow; $i++) {$arr += '  '}}
    1..$cal.GetDaysInMonth($Year, $Month) | % {
      if ($_.ToString().Length -eq "1") {$arr += ' ' + [String]$_}
      else {$arr += [String]$_}
    }
  }
  end {
    Write-Host Su Mo Tu We Th Fr Sa -for cyan
    for ($i = 0; $i -lt $arr.Length; $i+=6) {
      Write-Host $arr[$i..($i + 6)]
      $i++
    }
    Write-Host
  }
}