1

나는 MM/월/일, 같은 날짜 형식의 다른 유형이 MM/DD/YYYY 등 나는 날짜에 문자열 값의 다른 형식을 구문 분석 할 PowerShell에서. [MM/d/yyyy hh : mm : ss tt], MM/dd/yyyy hh : MM : SS는 TT ","M/DD/YYYY HH : MM : SS는 TT ")ParseExact 및 TryParseExact 방법은 파워 쉘 스크립트에서 여러 DateFormat을 수용하지 않는

$ 날짜 열 ="2017년 11월 8일 오후 2시 40분 31초 "

쓰기 호스트 ([날짜 ] :: ParseExact ($ 날짜 열, $ 형식을 $ null))

나는 예외 아래 "3"인수 (들) "ParseExact"를 호출

예외를 받고 있어요 라인 위에 실행하고 있습니다 : "문자열이 유효한 DateTime으로 인식되지 않았습니다." 라인에서 5 문자 : 1 + 호스트 쓰기 ([날짜] :: ParseExact ($ 날짜 열, $ 포맷을 $ null)) + ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified : (:) [], MethodInvocationException + FullyQualifiedErrorId : FormatException

문자열 값을 datetime으로 구문 분석하려고하고 문자열의 형식이 다를 수 있습니다. 누구든지 powershell을 사용하여이를 달성하는 방법을 알려줄 수 있습니까? 미리 감사드립니다.

답변

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