1

で複数のdateformatsを受け付けておりません、私はMM/D/YYYYのような日付形式の異なる種類を持って、MM/DD/YYYYなど..私は日時に文字列値の異なるフォーマットを解析しますPowerShellで。ParseExactとTryParseExact方法はPowerShellスクリプト

[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")

$日付ストリング= "2017年11月8日2時40分31秒PM"

書き込みホスト([日時] :: ParseExact($日付ストリング、$形式、$ヌル))

私は例外の下に "3" の引数(複数可)と "ParseExact" を呼び出す

例外を取得していますライン上で実行しています: "文字列が有効なDateTimeとして認識されませんでした。"ラインで :5文字:1 +-ホスト書き込み([日時] :: ParseExact($日付ストリング、$形式、$ヌル)) + ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :NotSpecified:(:) []、MethodInvocationException + FullyQualifiedErrorId:FormatException

文字列の値をdatetimeに解析したい場合、文字列は任意の形式で指定できます。 これを実現する方法を教えてもらえますか? ありがとうございます。

答えて

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 
関連する問題