Robię program, w którym potrzebuję mierzyć czas w milisekundach. Mam na myśli liczbę, która nigdy nie jest sobie równa i jest zawsze o 1000 liczb większa niż przed sekundą. Próbowałem przekonwertować DateTime.Now
na a TimeSpan
i uzyskać TotalMilliseconds
z tego ... ale słyszałem, że nie jest to idealnie dokładne.
Czy jest na to łatwiejszy sposób?
c#
datetime
milliseconds
time-precision
Jednostka
źródło
źródło
Odpowiedzi:
Skorzystaj z
Stopwatch
klasy.Jest kilka dobrych informacji na temat implementacji tutaj:
Testy wydajności: precyzyjne pomiary czasu pracy z diagnostyką systemową. Stoper
źródło
Oto jak różne metody konwersji Uniksa są implementowane w
DateTimeOffset
klasie (.NET Framework 4.6+, .NET Standard 1.3+):źródło
DateTime.Now
nie są one często „aktualizowane”), oczywiście użyjdecimal milliseconds = DateTime.Now.Ticks / (decimal)TimeSpan.TicksPerMillisecond;
zamiast nich.long
typ danych przed milisekundami. Używanie zint
pewnością się przepełni.DateTime.Ticks
Nieruchomość dostaje liczbę kleszczy, które reprezentują datę i godzinę.10000 tyknięć to milisekunda (10000000 tyknięć na sekundę).
źródło
A single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond.
Używam następującej klasy. Znalazłem go kiedyś w internecie, postulowałem, że jest najlepszy TERAZ () .
Źródło nieznane.
źródło
Możesz wypróbować
QueryPerformanceCounter
metodę natywną. Więcej informacji można znaleźć pod adresem http://www.pinvoke.net/default.aspx/kernel32/QueryPerformanceCounter.html . To jest to, czegoStopwatch
używa klasa.Zobacz jak uzyskać znacznik czasu precyzji taktu w .NET / C #? po więcej informacji.
Stopwatch.GetTimestamp()
daje dostęp do tej metody:źródło
Stopwatch.GetTimestamp()
faktycznie zapewnia dostęp do tej metody.Użyłem DateTime.Now.TimeOfDay.TotalMilliseconds (na bieżący dzień), mam nadzieję, że to również ci pomoże.
źródło
Użyj
System.DateTime.Now.ToUniversalTime()
. To umieszcza twój odczyt w znanym formacie milisekund opartym na referencji, który całkowicie eliminuje zmianę dnia itp.źródło