3

TimeSpan私はこのように作成しました

TimeSpan ts = new Timespan();

// Do some addition and subtraction on it

次に、これを使用してファイルに保存しています

string.Format("{0}:{1}:{2}:{3}", ts.Hours, ts.Minutes, ts.Seconds, ts.MilliSeconds);

そこから返されるさまざまな値は次のようになります

0:0:4:410
0:0:1:425
0:0:1:802
0:0:1:509
0:0:1:674
0:0:1:628
0:0:2:76

TimeSpanに戻す方法。

使ってます

TimeSpan.ParseExact("0:0:4:410", "h:m:s:fff", null); 

しかし、それは私にエラーを与えていますInput String is not in correct format.

私はどこが間違っていますか?

4

3 に答える 3

9

基本的に、コロンを解析する必要があると思います。また、現在のスレッドカルチャの代わりに不変カルチャを使用することをお勧めします。

var ts = TimeSpan.ParseExact("0:0:4:410", @"h\:m\:s\:fff",
                             CultureInfo.InvariantCulture);

ドキュメントから:

カスタムTimeSpan形式指定子には、日を時間から、時を分から、秒を小数秒から区切る記号などのプレースホルダー区切り記号は含まれていません。代わりに、これらの記号は文字列リテラルとしてカスタムフォーマット文字列に含める必要があります。たとえば、「dd.hh:mm」は、ピリオド(。)を日と時間の区切り文字として定義し、コロン(:)を時間と分の区切り文字として定義します。

またh:mm:ss.fff、代わりにの形式を使用することをお勧めします。これは、現在の形式よりも明確になると思います。現在のフォーマットアプローチの代わりに、フォーマットを直接使用できることに注意してください。

const string TimeSpanFormat = @"h\:mm\:ss\.fff";

string text = ts.ToString(TimeSpanFormat, CultureInfo.InvariantCulture);
...
TimeSpan parsed = TimeSpan.ParseExact(text, TimeSpanFormat,
                                      CultureInfo.InvariantCulture);
于 2012-08-20T11:46:14.097 に答える
1

colons解析を実行しているときは、:をエスケープする必要があります

TimeSpan.ParseExact("0:0:4:410", @"h\:m\:s\:fff", null)

カスタムTimeSpan形式指定子には、日を時間から、時を分から、秒を小数秒から区切る記号などのプレースホルダー区切り記号は含まれていません。代わりに、これらの記号は文字列リテラルとしてカスタムフォーマット文字列に含める必要があります。たとえば、「dd.hh:mm」は、ピリオド(。)を日と時間の区切り文字として定義し、コロン(:)を時間と分の区切り文字として定義します。

しばらく前に噛まれた

于 2012-08-20T11:47:13.660 に答える
1

Try this:

TimeSpan timeSpan = TimeSpan.ParseExact("0:0:4:410", @"h\:m\:s\:fff", null);
于 2012-08-20T11:54:51.090 に答える