Как точно построить временную отметку реального времени с точностью до миллисекунд?
Мне нужно что-то вроде 16.4.2013 9: 48: 00: 123. Это возможно? У меня есть приложение, в котором я выбираю значения 10 раз в секунду, и мне нужно показать их на графике.
c#
datetime
precision
milliseconds
LuckyHK
источник
источник
hh
для часов (стандартное время). В случае метки времени (и во многих других случаях) это, вероятно, должно быть связано сtt
(am / pm) или заменено наHH
(военное время).Ответы:
Я подозреваю, что вы имеете в виду точность в миллисекундах .
DateTime
имеет много точности, но довольно груб с точки зрения точности. Вообще говоря, вы не можете. Обычно системные часы (откуда ониDateTime.Now
получают данные) имеют разрешение около 10-15 мс. См. Блог Эрика Липперта о точности и точности для более подробной информации.Если вам нужно более точное время, чем это, вы можете изучить использование клиента NTP.
Однако, не ясно, что вам действительно нужна точность в миллисекундах. Если вас не интересует точное время - вы просто хотите показать сэмплы в правильном порядке с «довольно хорошей» точностью, тогда системные часы должны быть в порядке. Я бы посоветовал вам использовать,
DateTime.UtcNow
а неDateTime.Now
, чтобы избежать проблем с часовыми поясами при переходе на летнее время и т. Д.Если ваш вопрос на самом деле только вокруг преобразования
DateTime
в строку с точностью до миллисекунды, я предложил бы использовать:(Обратите внимание, что в отличие от вашего образца, это сортируется и с меньшей вероятностью может привести к путанице относительно того, будет ли это «месяц / день / год» или «день / месяц / год».)
источник
DateTime.UtcNow
несколько раз, увеличивается ли он когда-либо только раз в секунду? Вы этого не показывали.)Это должно работать:
Если вам не нужно, чтобы он отображался, и вам просто нужно знать разницу во времени, не конвертируйте его в строку. Просто оставь это,
DateTime.Now();
И используйте,
TimeSpan
чтобы узнать разницу между временными интервалами:пример
источник
Я искал подобное решение, основываясь на том, что было предложено в этой теме, я использую следующее
DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff")
, и оно работает как шарм. Примечание:.fff
это точные числа, которые вы хотите записать.источник
HH
(военное время) или добавитьtt
(PM или AM). Как показано в этом примере: repl.it/KGr3/1Используйте DateTime Structure с миллисекундами и форматируйте так:
источник
Ответ Pyromancer кажется мне довольно хорошим, но, возможно, вы хотели:
Но если вы сравниваете даты, TimeSpan это путь.
источник
TotalMilliseconds
. Миллисекунды содержат текущий счетчик Миллисекунд, который никогда не превышает 1000, тогда как TotalMilliseconds хранит общее количество миллисекунд, прошедших с начала эпохи.Если вам все еще нужна дата вместо строки, как в других ответах, просто добавьте этот метод расширения.
источник
Насколько я понимаю вопрос, вы можете пойти на:
Это отрежет тики меньше 1 миллисекунды.
источник
Проблема
DateTime.UtcNow
и вDateTime.Now
том , что, в зависимости от компьютера и операционной системы, это может быть только с точностью до от 10 до 15 миллисекунд. Однако на компьютерах с Windows можно использовать низкоуровневую функцию GetSystemTimePreciseAsFileTime для получения микросекундной точности, см. ФункциюGetTimeStamp()
ниже.источник
попробуйте использовать datetime.now.ticks. это обеспечивает точность наносекунды. берется дельта двух тиков (stoptick - starttick) / 10000 - миллисекунда указанного интервала.
https://docs.microsoft.com/en-us/dotnet/api/system.datetime.ticks?view=netframework-4.7.2
источник
Если вы хотите микросекунды, просто измените
10000
на10
, и если вы хотите 10-й микро, удалите/ 10000
.источник
DateTime.Now.ToString ( "ddMMyyyyhhmmssffff")
источник