RWTodd.DiscordianDate.psm1

function Get-DiscordianDate {
    [CmdletBinding(DefaultParameterSetName = 'FormattedOutput')]
    param (
        [Parameter(Position = 0)]
        [DateTime] $Date = [DateTime]::Now,

        [Parameter()]
        [int] $Relative = 0,

        [Parameter(ParameterSetName = 'FormattedOutput')]
        [string] $Format = "",

        [Parameter(ParameterSetName = 'RawOutput', Mandatory)]
        [switch] $Raw
    )
    if ($Relative -ne 0) {
        $Date = $Date.AddDays($Relative)
    }
    Write-Verbose "Date to convert is $Date"
    $result = [RWTodd.Discordian.Date]::new($Date)
    if($PSCmdlet.ParameterSetName -eq 'FormattedOutput') {
        if ($Format.Length -eq 0) {
            $today = [DateTime]::Now
            if (($Date.DayOfYear -eq $today.DayOfYear) -and ($Date.Year -eq $today.Year)) {
                $Format = [RWTodd.Discordian.Date]::TODAY_FMT
            }
            else {
                $Format = [RWTodd.Discordian.Date]::DEFAULT_FMT
            }
        }
        Add-Member -InputObject $result -NotePropertyName "Formatted" -NotePropertyValue $result.Format($Format)
    }
    Write-Output $result
}