Powershell Datetime::Parseexact具有多种格式

mec1mxoz  于 2023-05-07  发布在  Shell
关注(0)|答案(1)|浏览(126)

我试图使用parseexact,但我有多种格式的日期。我尽力了

$format =@('yyMMddHHmm') 
[System.DateTime]::ParseExact('1605221412',$format,$null)

当我尝试添加另一种格式时,我得到一个异常

$format =@('yyMMddHHmm', 'yyyyMMddHHmm') 
[System.DateTime]::ParseExact('1605221412',$format,$null,[System.Globalization.DateTimeStyles]::None)

我尝试了双引号,编写内联,尝试以各种方式传递数组作为第二个参数。

[System.DateTime]::ParseExact('1605221412','yyMMddHHmm, yyyyMMddHHmm',$null,[System.Globalization.DateTimeStyles]::None)

我错过了什么?是否可以使用ParseExact来处理多种格式,而无需执行一堆if、then和else语句?

fwzugrvs

fwzugrvs1#

你做得很好,唯一的问题是@(..)object[]而不是string[]

$datesToTest = '1605221412', '09/02/2022', '02-09-2022'
$formats = 'yyMMddHHmm', 'yyyyMMddHHmm', 'dd/MM/yyyy', 'dd-MM-yyyy'
$datesToTest | ForEach-Object {
    [datetime]::ParseExact($_, [string[]] $formats, [cultureinfo]::InvariantCulture)
}

*参见ParseExact(String, String[], IFormatProvider, DateTimeStyles)

相关问题