1

タイムスタンプをシステムのティックカウント (開始時刻からのミリ秒) として返す C# プログラムでいくつかのイベントをキャプチャしています。

私が見た他の質問に基づいて、System.Environment.TickCountプロパティ (または他の何か) から同じ数を取得できることを知っている場合、受け取った TickCount に対応する DateTime オブジェクトをどのように推測できますか?

4

4 に答える 4

6

より多くの情報がなければ、それはできません (それでもあいまいになる可能性があります)。Environment.TickCount戻り値:

コンピューターが最後に起動されてから経過したミリ秒単位の時間を含む 32 ビットの符号付き整数。

...だから、どこかからコンピュータが起動された時間を見つけられない限り、あなたは運が悪い. 最後の起動時間を確認するために作成できるレジストリ エントリまたはシステム コールが存在する可能性がありますが、私は頭の中でそれらを知りません。もちろん、自分自身とその直後 (またはその前) を取り、2 つの違いを見つけることで、おおよその値を取得できます。Environment.TickCountDateTime.UtcNow

public static DateTime UnreliableDateTimeFromTickCount(int tickCount)
{
    DateTime now = DateTime.UtcNow;
    DateTime boot = now - TimeSpan.FromMilliseconds(Environment.TickCount);
    return boot + TimeSpan.FromMilliseconds(tickCount);
}

ただし、それでも値24.9 日ごとに循環するため、コンピューターがそれよりも長くオンになっていると、カウントが曖昧になります。

Environment.TickCount基本的に、可能であれば使用を避けることをお勧めします-これはあなたの管理下にありますか?

于 2012-07-04T18:26:32.490 に答える