8

この TimeSpan.ParseExact への呼び出しから FormatError 例外を受け取りましたが、私が読んでいるMSDN ドキュメントには、この形式は正しいはずだと書かれています。

TimeSpan timeSpan = TimeSpan.ParseExact("172100", "HHmmss", CultureInfo.InvariantCulture);

なぜこれが機能しないのか誰か教えてください。DateTime.ParseExact の呼び出しでほぼ同じことを行っていますが、これは正常に機能します。

DateTime datetTime = DateTime.ParseExact("090820", "yyMMdd", CultureInfo.InvariantCulture);
4

5 に答える 5

15

TimeSpan は、DateTime と同じフォーマット規則を使用しません。

HHmmss ではなく、hhmmss が必要です。

MSDN で間違ったページを見ています - 次のようなものが必要です:

http://msdn.microsoft.com/en-us/library/se73z7b9.aspx

于 2011-04-06T15:48:31.037 に答える
5

このより正確なドキュメントへの参照: http://msdn.microsoft.com/en-us/library/ee372287.aspx

hhではなく、何時間も使用する必要がありますHH

于 2011-04-06T15:51:02.890 に答える
3

Custom TimeSpan Format Stringsに従って、時間は「H」ではなく「h」で表されます。

したがって、これはうまく機能します:

TimeSpan timeSpan = TimeSpan.ParseExact("172100", "hhmmss", 
                                        CultureInfo.InvariantCulture);

リンク先のドキュメントは、同じではないカスタムの日付と時刻の形式文字列用です。彼らはDateTime.ParseExactなどのためです。私がリンクしたドキュメントは、TimeSpan.ParseExactなどのためのものです。

于 2011-04-06T15:50:21.603 に答える
2

DateTimeフォーマット文字列を使用して を解析しようとしていますTimeSpanTimeSpan独自の (わずかに異なる) フォーマット文字列があります。完全なリストについては、MSDN を参照してください: Custom TimeSpan Format Strings

特に、 に変更HHhhます。これにより、次のことが得られます。

TimeSpan timeSpan = TimeSpan.ParseExact("172100",
                                        "hhmmss", // Note this parameter
                                        CultureInfo.InvariantCulture);
于 2011-04-06T15:49:26.270 に答える
2

文字列を解析して DateTime 値にし、その Date 値を差し引いて時間を TimeSpan として取得します。

DateTime t = DateTime.ParseExact("172100", "HHmmss", CultureInfo.InvariantCulture);
TimeSpan time = t - t.Date;
于 2011-04-06T15:51:02.217 に答える