2017-10-18 16 views
-5

私は現在非常に高速で値を返すセンサーを備えたシミュレータをプログラミングしています。豊富なログがあるので、ラインナップを正しく取得することが非常に重要です。これを行うために、タイマーを整列させようとしています。しかしながら、これは問題を形成する。ミリ秒を返すときは、.01 .1またはミリ秒も返さないことがよくあります。これはラインナップを軽く投げ捨てている。どのようにそれを強制的にどのようなアイデアの例.000。ミリ秒の精度で戻るtime.now

Basicly私はこれにしようとしている:私は、現時点ではやっているように、あまりにも多くのコードを使用しない

[DEBUG]|18:48:39.449| Sonar 10d | Sonar1 40d | 7.684386 
[DEBUG]|18:48:39.450| Sonar 10d | Sonar1 10d | 27.54916 
[DEBUG]|18:48:39.500| Sonar 10d | Sonar1 20d | 14.52461 
[DEBUG]|18:48:39.000| Sonar 10d | Sonar1 30d | 9.878839 

[DEBUG]|18:48:39.449| Sonar 10d | Sonar1 40d | 7.684386 
[DEBUG]|18:48:39.45| Sonar 10d | Sonar1 10d | 27.54916 
[DEBUG]|18:48:39.5| Sonar 10d | Sonar1 20d | 14.52461 
[DEBUG]|18:48:39| Sonar 10d | Sonar1 30d | 9.878839 

はもっとこのように見えます。

現在のコード:

DateTime time = DateTime.Now;  
time.ToString("HH:mm:ss.FFF"); 

そして、あまりにも多くのコードを追加します。そして、0の...

+2

1行は「あまりにも多くのコード」とみなされますか?あなたは何を求めているのですか? – Amy

+0

「18:48:39.45」は、「18:48:39.450」と同じ意味ですね。 – Plutonix

+2

他のフィールドと関連がある場合は、String.PadRight(https://msdn.microsoft.com/en-us/library/system.string.padright(v=vs.110).aspx)に興味があります。これは、指定された長さに文字列を埋め込みます。たとえば、Sonar10などで終わると便利です。 – Chris

答えて

5

利用fff代わりのFFF

time.ToString("HH:mm:ss.fff"); 

例は

var now = new DateTime(2017,10,18,12,16,16, 10); 
Console.WriteLine("What you want {0:HH:mm:ss.fff}", now); 
Console.WriteLine("WHat you have {0:HH:mm:ss.FFF}", now); 

は、より多くのフォーマット文字列のオプションについては出力

What you want 12:16:16.010 
WHat you have 12:16:16.01 

に作成しCustom Date and Time Format Strings

見ますあなたは、以下のような行を試すことができ
+0

パーフェクト。それは私が探していたものでした –

0

0は

time.ToString("HH:mm:ss.fff"); 

あなたはこれは次の出力

18:20:13.000 
を印刷する必要があります

var s = DateTime.ParseExact("20170810 18:20:13", "yyyyMMdd HH:mm:ss", null).ToString("HH:mm:ss.fff"); 

以下のコードでそれをテストすることができます(下ケースfに注意してください)

関連する問題