Estou criando um programa no qual preciso passar o tempo em milissegundos. Com o tempo, quero dizer um número que nunca é igual a si mesmo e é sempre 1000 números maior do que era um segundo atrás. Eu tentei converter DateTime.Now
para um TimeSpan
e tirar TotalMilliseconds
proveito disso ... mas ouvi dizer que não é perfeitamente preciso.
Existe uma maneira mais fácil de fazer isso?
c#
datetime
milliseconds
time-precision
Entidade
fonte
fonte
Respostas:
Use a
Stopwatch
classe.Há algumas boas informações sobre como implementá-lo aqui:
Testes de desempenho: medições precisas de tempo de execução com System.Diagnostics.Stopwatch
fonte
É assim que os vários métodos de conversão Unix são implementados na
DateTimeOffset
classe (.NET Framework 4.6+, .NET Standard 1.3+):fonte
DateTime.Now
não seja "atualizado" com muita frequência), é claro que usedecimal milliseconds = DateTime.Now.Ticks / (decimal)TimeSpan.TicksPerMillisecond;
.long
tipo de dados na frente de milissegundos. Usandoint
certamente vai transbordar.A
DateTime.Ticks
propriedade obtém o número de ticks que representam a data e a hora.10,000 Ticks é um milissegundo (10.000.000 ticks por segundo).
fonte
A single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond.
Eu uso a seguinte classe. Encontrei-o na Internet uma vez, postulado como o melhor NOW () .
Fonte desconhecida.
fonte
Você pode tentar o
QueryPerformanceCounter
método nativo. Consulte http://www.pinvoke.net/default.aspx/kernel32/QueryPerformanceCounter.html para obter mais informações. É isso que aStopwatch
classe usa.Consulte Como obter o registro de data e hora da precisão de ticks no .NET / C #? Para maiores informações.
Stopwatch.GetTimestamp()
dá acesso a este método:fonte
Stopwatch.GetTimestamp()
realmente fornece acesso a esse método.Eu usei DateTime.Now.TimeOfDay.TotalMilliseconds (para o dia atual), espero que ajude você também.
fonte
Use
System.DateTime.Now.ToUniversalTime()
. Isso coloca sua leitura em um formato conhecido de milissegundo baseado em referência que elimina totalmente a mudança do dia, etc.fonte