Private/ConvertTo-SFDateTimeOffset.ps1
|
function ConvertTo-SFDateTimeOffset { [CmdletBinding()] [OutputType([DateTimeOffset])] param ( [Parameter(Mandatory)] $Value ) if ($Value -is [DateTimeOffset]) { return $Value } if ($Value -is [DateTime]) { return [DateTimeOffset]$Value } $text = [string]$Value if ($text -match '^/Date\((?<milliseconds>-?\d+)(?:[+-]\d{4})?\)/$') { return [DateTimeOffset]::FromUnixTimeMilliseconds([long]$Matches.milliseconds) } $parsed = [DateTimeOffset]::MinValue if ([DateTimeOffset]::TryParse( $text, [Globalization.CultureInfo]::InvariantCulture, [Globalization.DateTimeStyles]::AllowWhiteSpaces, [ref]$parsed )) { return $parsed } throw "Value '$text' is not a supported SuccessFactors date/time value." } |