27

文字列からタイムスパンを取得しようとしていますが、TryParseExact が false (失敗) を返しています。

何が間違っているのかわかりません。助けてもらえますか? コードで 2 つのバージョンの行を試しましたが、どちらも機能しません。

TimeSpan.TryParseExact("04:00:01","HH:mm:ss",CultureInfo.CurrentCulture, out aTime)

TimeSpan.TryParseExact("04:00:01","HH:mm:ss", null, out aTime)

編集:ここでの両方の応答は正しいです。カスタムタイムスパン形式の形式が間違っています-私が犯した間違いは、DateTimeのカスタム形式がTimeSpansで機能すると仮定することですが、機能しません。

4

4 に答える 4

47

問題は、指定したTimeSpanのフォーマット文字列にあります"HH:mm:ss"。指定子HH(大文字)はタイムスパンに対して無効です。を使用する必要がありますhh。フォーマット文字列では、大文字と小文字が区別されます。

コロン文字(:)もエスケープする必要があるため、、またはを使用"hh\\:mm\\:ss"@"hh\:mm\:ss"ます"hh':'mm':'ss"。3つの形式はすべて同じ効果があります。

TimeSpanの有効なカスタムフォーマット文字列のリストは、ここで確認できます。TimeSpanの標準形式の文字列はここにあります。

DateTimeとDateTimeOffsetにHHは有効ですが、小文字のhhは12時間制を表しますが、TimeSpanの場合-時間コンポーネントは常に24時間制に基づいています。HH統一性のためにフォーマットが選択されたと思うかもしれませんが、違います-それはhhです。

于 2012-10-24T04:11:33.980 に答える
5

おそらく、コロン文字をエスケープする必要があることに言及する必要があります。

TryParseExact("04:00:01", "HH\\:mm\\:ss" ...
于 2015-12-12T01:38:59.907 に答える
3

渡された文字列形式が間違っています。

var res=TimeSpan.TryParseExact("04:00:01", "g", CultureInfo.CurrentCulture, out aTime);

g- 一般的な短い形式で、カルチャに依存します。

詳細はこちらStandard Timespan Format Strings

于 2012-10-24T03:49:22.140 に答える