Как мне добраться от Stopwatch.GetTimestamp () до DateTime? - PullRequest
8 голосов
/ 17 сентября 2009

Дубликат: Как получить временную метку точности тиков в .NET / C #?
Как мне получить из Stopwatch.GetTimestamp () в DateTime

Предположим, что секундомер. IsHighResolution имеет значение

Ответы [ 2 ]

7 голосов
/ 17 сентября 2009

Если это счетчик с высоким разрешением, нет никакой гарантии, что значение имеет какую-либо корреляцию с реальным временем - например, это может быть «тики с момента загрузки компьютера» Для таймера не с высоким разрешением вы можете использовать new DateTime(Stopwatch.GetTimestamp()), но это не обязательно даст полезное значение для таймера высокого разрешения. (Это, конечно, не на моей коробке.)

Для чего вы пытаетесь использовать это? Идея Stopwatch заключается в измерении интервалов времени.

0 голосов
/ 17 октября 2015

Имейте в виду, что если вы пытаетесь отслеживать истекшее время, вы должны использовать:

Stopwatch sw = Stopwatch.StartNew();
//do stuff
sw.Elapsed; //or
sw.ElapsedMilliseconds;

Это точно преобразует тики в реальном времени. Преобразование тиков в DateTime, а затем сравнение DateTimes также будет работать, но вышеприведенное проще.

Некоторые (в том числе и я) ошибочно использовали подобный код и получали от него плохие времена:

startTime = Stopwatch.GetTimestamp();

totalTime = (Stopwatch.GetTimestamp() - startTime) / 10000; 
//it was assumed 10,000 ticks was a millisecond, incorrectly
...