0

check the code

        StringBuilder s = new StringBuilder();
        for (var i = 0; i < 100; i++)
        {
            TimeSpan t = (DateTime.UtcNow - new DateTime(2010, 1, 1));
            ulong timestamp = (ulong)(t.TotalMilliseconds * 100000000);
            s.Append("<li>" + timestamp.ToString());
        }

You will get same result 100 times, it means the DateTime.UtcNow never changes even I multiply milliseconds by 100000000 times.

Is here anyone know how to get fresh DateTime.UtcNow each time?

4

3 に答える 3

3

このようなタイトなループでは、同じ時間を取得できる可能性が非常に高くなります。

プロパティの各目盛りはTicks、100 ナノ秒のスライスを表します。あなたのコードはそれよりも速く繰り返されます。

于 2011-12-08T19:33:59.773 に答える
0

スニペットをLinqPadに配置しt.TotalMilliseconds.Dump()、forループが終了する直前に追加しました。最初のいくつかの結果は次のとおりです。

61068982141.4911    
61068982143.9916    
61068982143.9916    
61068982144.4917    
61068982144.4917    
61068982144.4917    
61068982144.4917    
61068982144.9918    
61068982144.9918    
61068982144.9918    
61068982144.9918    
61068982145.4919    
61068982145.4919    
61068982145.4919    
61068982145.4919    
61068982145.992    
61068982145.992    
61068982145.992    
61068982145.992

ループはかなり高速に実行されており、小数の後に小数のミリ秒が表示されています。

于 2011-12-08T19:37:53.550 に答える
0

最良の方法は、System.Diagnostics.Stopwatchクラスを使用して高解像度でタイム スパンを測定することです。ほとんどのコンピュータでは、デフォルトのクロック間隔は 15.625 ミリ秒です。これは、1 クロック間隔内で取得した 2 つのタイムスタンプの差DateTime.UtcNowが 0 になること を意味しますStopwatch。詳細については、マネージ コードでのタイム スパン測定を参照してください。

于 2016-05-15T20:26:16.697 に答える