2017-07-12 15 views
1

ParseExact()は、このAMタイムスタンプで期待通りに機能します。しかし、それはPMで失敗します。PMで 'tt'の解析日が失敗する

PS C:\Users\pwatson> [DateTime]::ParseExact('11/24/2017 05:12:44.123 AM', 'M/dd/yyyy HH:mm:ss.fff tt', $null) 

Friday, November 24, 2017 05:12:44 

PS C:\Users\pwatson> [DateTime]::ParseExact('11/24/2017 05:12:44.123 PM', 'M/dd/yyyy HH:mm:ss.fff tt', $null) 
Exception calling "ParseExact" with "3" argument(s): "String was not recognized as a valid DateTime." 
At line:1 char:1 
+ [DateTime]::ParseExact('11/24/2017 05:12:44.123 PM', 'M/dd/yyyy HH:mm ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : FormatException 
+1

コンピュータがに設定されているどのような文化?たぶん、 '$ null'の代わりに不変の文化を渡す –

+0

質問を編集して文化情報を追加してください。 PowerShellから取得するには、[Threading.Thread] :: CurrentThread'を使用します。 – vonPryz

+2

hhの代わりにhhと思う(HHは24時間制ですので、05:00 pmは無効と見なされます) –

答えて

1

あなたは書式設定コードhhの代わりHHを使用する必要があります。 hhは12時間のクロックです。 HHは24時間制です。午前5時12分は有効な時刻ですが、PM時刻ではないため05時25分は有効ではないため、05は24時間の午前5時であると解釈され、PMと互換性がないため有効です。

[DateTime]::ParseExact('11/24/2017 05:12:44.123 AM', 'M/dd/yyyy hh:mm:ss.fff tt', $null) 
[DateTime]::ParseExact('11/24/2017 05:12:44.123 PM', 'M/dd/yyyy hh:mm:ss.fff tt', $null) 

戻り値:

24 November 2017 05:12:44 
24 November 2017 17:12:44 
+0

ありがとうございました。私の愚かな間違い。 – lit

関連する問題