2017-01-29 9 views
0

DateTimeにマイクロ秒とナノ秒を追加します。DatetTimeにマイクロ秒とナノ秒を追加するには?

DateTime dateTime = DateTime.Now; 

for(int i = 0; i < 100000; i++) 
{ 
    dateTime = dateTime.AddMilliseconds(0.1); 
    Console.WriteLine(dateTime.ToString("yyyy.MM.dd,HH:mm:ss.ffffff"));   
} 

私はdateTimeに違いは見られません。 これは正しい方法ですか?

+0

私のアップデートをご覧ください。これはまだ同じです。 – user979033

+0

'AddMilliseconds'の参照元を見ると、コードは値を最も近い整数に丸めているように見えるので、ダブルをとってもそのようにマイクロ秒を追加することはできません。 (ところで、マイクロ秒は0.1msではなく、0.001msです)。 'AddTicks'メソッドを使用してください:' dateTime = dateTime.AddTicks(10); ' –

+1

[改訂履歴]の後に再オープンを投票します(最初のリビジョンに基づいてCodeCasterの投票に同意します) ](http://stackoverflow.com/posts/41919876/revisions)は、正確に関連する質問の複製ではありません。あなたが同意しない場合は、私にpingをするか、投票を再開してもう一度やり直してください。ありがとう。 –

答えて

2

からDateTime.AddMilliseconds documentation;

パラメータ

value

タイプ:System.Double

全体と小数ミリ秒数。 valueパラメータは負または正の値を取ることができます。 この値は、 に最も近い整数に四捨五入されています。

し、また、あなたがそれを見ることができるのようreference sourceです:

public DateTime AddMilliseconds(double value) 
{ 
    return Add(value, 1); 
} 

と呼ばれるこのAdd method referencevalue = 0.1scale = 1ため

private DateTime Add(double value, int scale) 
{ 
    long millis = (long)(value * scale + (value >= 0? 0.5: -0.5)); 
    ... 
    ... 
} 

Explicit Numeric Conversions Tableが言うので、それは

long millis = (long)(0.6); 

この(long)(0.6)リターン0になります。

あなたがdoubleまたはfloat型の値から整数型への変換、 値はそう

切り捨てられ、実際には、あなたが あるは、DateTimeのインスタンスには何も追加しませんすべての反復で同じ結果が得られます。あなたが混乱を避けるためにDateTimeの AddXXXメソッドを扱うときに整数で作業します。

1ミリ秒は10000チックなので、何をするかはです。数学的にはです。

DateTime dateTime = DateTime.Now; 

for(int i = 0; i < 100000; i++) 
{ 
    dateTime = dateTime.AddTicks(1000); 
    Console.WriteLine(dateTime.ToString("yyyy.MM.dd,HH:mm:ss.ffffff"));   
} 
関連する問題