Как получить текущую миллисекунду из структуры TIME_OF_DAY_INFO

Следующее не дает текущую миллисекунду с сервера tod_msecs Тип: DWORD

Количество миллисекунд от произвольной начальной точки (сброс системы).

Обычно этот член считывается дважды, один раз в начале процесса и еще раз в конце. Чтобы определить время, прошедшее между началом и окончанием процесса, вы можете вычесть первое значение из второго.


person Techy    schedule 28.07.2011    source источник
comment
Непонятно, как вы вызываете метод, что он вам дает и чего вы ожидаете.   -  person unkulunkulu    schedule 28.07.2011
comment
NET_API_STATUS Status = NetRemoteTOD(Server, (LPBYTE *)&TimeOfDay); GetLocalTime(&LocalSystemTime).. Это метод..... Мне нужно получить время с сервера в формате, скажем, 11:53:04:456, в котором 456 представляет микросекунды   -  person Techy    schedule 28.07.2011


Ответы (1)


Простым решением было бы вызвать функцию GetTickCount при запуске процесса и GetTickCount при завершении процесса и найти разницу. если вы запускаете процесс более 49,7 дней, вместо этого используйте GetTickCount64

Если вам нужна более точная реализация, используйте QueryPerformanceCounter() и QueryPerformanceFrequency(). см. http://msdn.microsoft.com/en-us/library/ms644900(v=vs.85).aspx

person Jeeva    schedule 28.07.2011
comment
Я использую следующий код для сравнения системного времени и времени сервера. Функция GetTickCount дает количество миллисекунд, прошедших с момента запуска системы. Но мне нужно точное значение миллисекунды в диапазоне от 0 до 999. Следующий код: NET_API_STATUS Status = NetRemoteTOD(Сервер, (LPBYTE *)&TimeOfDay); ПолучитьМестноеВремя(&МестноеСистемноеВремя); -> отсюда я получаю часы, секунды и миллисекунды. Мне также нужен тот же формат с сервера. Только миллисекунды с сервера не могут быть получены - person Techy; 28.07.2011
comment
@Techy, когда вы дважды вызываете GetTickCount и вычитаете первое значение из второго, вы получите точную продолжительность вашего процесса. Что касается вашего кода, вы пытались получить tod_msecs, который даст миллисекунды, поэтому вам нужно получить его дважды и вычесть. GetLocalTime просто дает вам ваше системное время, это не прошедшее время - person Jeeva; 28.07.2011
comment
я извлек значения tod_msecs и вычел их. Но это дало очень большое значение, которое вовсе не является относительным. - person Techy; 28.07.2011
comment
Чтобы упростить, мне нужно получить время с сервера в формате 11:50:05:365. - person Techy; 28.07.2011
comment
@Techy, ваша цель - найти количество прошедших миллисекунд или текущее время? Если вы получаете большое значение в миллисекундах, попробуйте разделить его на 1000, чтобы получить секунды, затем на 60, чтобы получить минуты, затем на 12, чтобы получить часы, и отформатируйте его так, как вы хотите. - person Jeeva; 28.07.2011