2012-02-27 9 views
0

ストップウォッチから特定のフォーマット==> hh:mm:ss.fまでの経過時間を解析しようとしています。タイムカウンタの表示。 XX:XX:xx.xのそれは、常にこのよう表示:12:XX:xx.xのストップウォッチの経過時間から解析されたDateTimeは、常に12:00:00に開始します。

string counter = DateTime.Parse(_stopwatch.Elapsed.ToString()).ToString("hh:m:ss.f"); 

問題ではなく、カウンター表示を次のように見ているということです。これは私がやろうものです

なぜ12で始まるのですか?

私は00:12:34.5のようなものを見たいと思います。 12:12:34.5の代わりに34秒が経過した。

私はここで何が欠けていますか?

ありがとうございました。

を修正し、私自身の問題、これをしなかった

UPDATE:

string formattedResult = _stopwatch.Elapsed.ToString(@"hh\:mm\:ss\.f"); 
24時間を使用しています HHのではなく、12時間時計を使用していますあなたは hhを使用している

答えて

3

クロック。

using System; 

class Test 
{ 
    static void Main() 
    { 
     DateTime dateTime = new DateTime(2012, 2, 27, 0, 34, 45, 56); 
     // Prints 12:34:45 
     Console.WriteLine(dateTime.ToString("hh:mm:ss")); 
    } 
} 

あなただけ解析するStopwatch.Elapsedの結果をフォーマットしている理由は明らかではない:あなたが書く場合は、同じを取得します - これはstopwachからの結果を解析するとは何の関係もないことを

注意もう一度やり直してください。無関係の文字列変換を避けるようにしてください。 .NET 4を使用している場合、TimeSpanstandardcustomの形式をサポートしています。次

+0

こんにちはジョン、返信に感謝。私はWP7アプリケーションでこれをやっているので、.NET 4のカスタム文字列フォーマッタにはアクセスできません。 _stopwatch.Elapsed.ToString();を実行しようとしました。それは私が欲しくないミリ秒にそれをフォーマットしました。 _stopwatch.Elapsed.ToString( "HH:mm:ss [.f]")のようなものです。どちらもうまくいきませんでした。 私は何十秒も正確に探していたので、@ hh \:mm \:ss \ .f "は私のトリックでした。 – Cranialsurge

+0

@Cranialsurge:私はまだそれを日付/時刻に変換しません。それの各部分にカスタム書式文字列を使用するだけです。基本的に、これは*日時ではなく、それを1つのものとして扱うことは悪い考えです。あなたが24時間以上になったらどうしたらいいですか? –

+0

+ Jon:うん、もうDateTimeに変換していない。私が必要とするのは、上記の私の更新で得られる文字列だけです。私はこの特定の要件のために24時間を超えることはありませんが、私はあなたの懸念を理解しています。理想的には、私が探していたのは表示専用の特定の形式の文字列でした。 TimeSpanが提供する標準の 'c'、 'g'、および 'd'フォーマッタ以上のものをToString()だけで受け入れると、_stopwatch.Elapsedを直接格納できました。 – Cranialsurge

0

用途:

string formattedResult = _stopwatch.Elapsed.ToString(@"hh\:mm\:ss\.f"); 
関連する問題