我在数组变量中有以下内容
Mon May 1 08:13:18 2017 Sat Apr 29 19:07:14 2017
In order to update the format and timezone, I have to run these two ParseExact
commands first.
$time | ForEach-Object {$_ = [datetime]::ParseExact($_,'ddd MMM d HH:mm:ss yyyy',[System.Globalization.CultureInfo]::InvariantCulture)}
$time | ForEach-Object {$_ = [datetime]::ParseExact($_,'ddd MMM dd HH:mm:ss yyyy',[System.Globalization.CultureInfo]::InvariantCulture)}
我失败了一个错误(这是预期的)
“带有” 3“参数的调用” ParseExact“的异常:”字符串未被识别为有效的DateTime。“
在D:\ UPDATING.ps1:
+ ... ach-Object {$ _ = [datetime]::ParseExact($ _ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~
+ CategoryInfo:未指定:(:) [],MethodInvocationException
+ FullyQualifiedErrorId:FormatException
从长远来看,一切正常,我可以进行格式化,但是我想知道这样做是否比使用2
parseExact
更好? 最佳答案
ParseExact
方法有多个重载。其中之一允许您指定要分析的多种日期模式:
$time = 'Sat Apr 29 19:07:14 2017', 'Mon May 1 08:13:18 2017'
$time | % { [DateTime]::ParseExact($_, [String[]]('ddd MMM d HH:mm:ss yyyy',
'ddd MMM dd HH:mm:ss yyyy'), [CultureInfo]::InvariantCulture, 'None') }
也有重载,它允许您指定其他解析选项,例如
[Globalization.DateTimeStyles]::AllowInnerWhite
,以允许在解析的字符串中包含其他空格字符:$time | % { [DateTime]::ParseExact($_, 'ddd MMM d HH:mm:ss yyyy', [CultureInfo]::InvariantCulture, 'AllowInnerWhite') }