ParseExact和TryParseExact方法不接受powershell脚本中的多个dateformats

时间:2017-11-09 07:47:22

标签: powershell azure-table-storage azure-powershell datetime-parsing

我有不同类型的日期格式,如MM / d / yyyy,MM / dd / yyyy等。我想在PowerShell中将不同格式的字符串值解析为datetime。

[string []] $ format = @(" MM / d / yyyy hh:mm:ss tt"," M / d / yyyy hh:mm:ss tt" ," MM / dd / yyyy hh:mm:ss tt"," M / dd / yyyy hh:mm:ss tt")

$ dateString =" 11/8/2017 02:40:31 PM"

Write-Host([datetime] :: ParseExact($ dateString,$ format,$ null))

当我执行以上行时,我会遇到异常

异常调用" ParseExact"用" 3"参数:" String未被识别为有效的DateTime。" 在行:5 char:1 + Write-Host([datetime] :: ParseExact($ dateString,$ format,$ null)) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~     + CategoryInfo:NotSpecified:(:) [],MethodInvocationException     + FullyQualifiedErrorId:FormatException

我想将字符串值解析为datetime,字符串可以是任何格式。 任何人都可以告诉我如何使用PowerShell实现这一目标。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

此代码有效,但我没有找到使其与DateTime.ParseExact()的特定重载一起使用的方法。

[string[]] $format = @("MM/d/yyyy hh:mm:ss tt","M/d/yyyy hh:mm:ss tt","MM/dd/yyyy hh:mm:ss tt","M/dd/yyyy hh:mm:ss tt")
$dateString = "11/8/2017 02:40:31 PM"

$result = $null
$format.ForEach({ [DateTime] $dt = New-Object DateTime; if([datetime]::TryParseExact($dateString, $_, [System.Globalization.CultureInfo]::InvariantCulture, [System.Globalization.DateTimeStyles]::None, [ref] $dt)) { $result = $dt } });

Write-Host ($result)

输出:

11/8/2017 2:40:31 PM