Private/ConvertTo-DateTime.ps1

Function ConvertTo-DateTime {
    <#
        .SYNOPSIS
            Return a date/time string converted to a localised short date string.
    #>

    [OutputType([System.DateTime])]
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory = $True, Position = 0)]
        [ValidateNotNullOrEmpty()]
        [System.String] $DateTime,

        [Parameter(Position = 1)]
        [System.String] $Pattern = 'MM/dd/yyyy'
    )

    # Convert the date/time passed to the function. If conversion fails, pass the same string back
    try {
        $ConvertedDateTime = [DateTime]::ParseExact($DateTime, $Pattern, [System.Globalization.CultureInfo]::CurrentUICulture.DateTimeFormat)
        $Output = $ConvertedDateTime.ToShortDateString()
    }
    catch {
        Write-Verbose -Message "$($MyInvocation.MyCommand): Failed to convert to short date."
        $Output = [DateTime] $DateTime
    }
    
    # Write the output to the pipeline
    Write-Verbose -Message "$($MyInvocation.MyCommand): Returning date: [$Output]."
    Write-Output -InputObject $Output
}