タイムスタンプをシステムのティックカウント (開始時刻からのミリ秒) として返す C# プログラムでいくつかのイベントをキャプチャしています。
私が見た他の質問に基づいて、System.Environment.TickCount
プロパティ (または他の何か) から同じ数を取得できることを知っている場合、受け取った TickCount に対応する DateTime オブジェクトをどのように推測できますか?
より多くの情報がなければ、それはできません (それでもあいまいになる可能性があります)。Environment.TickCount
戻り値:
コンピューターが最後に起動されてから経過したミリ秒単位の時間を含む 32 ビットの符号付き整数。
...だから、どこかからコンピュータが起動された時間を見つけられない限り、あなたは運が悪い. 最後の起動時間を確認するために作成できるレジストリ エントリまたはシステム コールが存在する可能性がありますが、私は頭の中でそれらを知りません。もちろん、自分自身とその直後 (またはその前) を取り、2 つの違いを見つけることで、おおよその値を取得できます。Environment.TickCount
DateTime.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
基本的に、可能であれば使用を避けることをお勧めします-これはあなたの管理下にありますか?