Здравствуйте, Аноним, Вы писали:
А>каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?
Система?
Если Windows, то GetSystemTime
Здравствуйте, Аноним, Вы писали:
А>Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?
Я делал так (только с точностью до микросекунд):
struct unix_t
{
//! Время в секундах от 1970.01.01 00:00:00.
time_t m_sec;
//! Дробная часть времени в микросекундах.unsigned long m_microsec;
//! Конструктор по-умолчанию.inline
unix_t()
: m_sec( 0 )
, m_microsec( 0 )
{}
//! Инициализирующий конструктор.inline
unix_t(
time_t sec,
unsigned long microsec )
: m_sec( sec )
, m_microsec( microsec )
{}
//! Получение текущего времени.static unix_t
get();
// ...bla-bla-bla...
};
unix_t
unix_t::get()
{
return _os_get();
}
где _os_get() в зависимости от платформы определялась так. Для Windows:
/*!
\since v.1.3.1
\brief Получение времени с точностью до микросекунды под Win32.
*/inline unix_t
_os_get()
{
typedef unsigned __int64 uint64_type;
// Смещение UNIX-эпохи (1970.01.01 00:00:00) от Win32-эпохи
// (1601.01.01 00:00:00).const uint64_type delta =
(((uint64_type) 0x019DB1DE) << 32) |
((uint64_type) 0xD53E8000);
// Определяем текущее время.
FILETIME ft_current;
GetSystemTimeAsFileTime( &ft_current );
uint64_type current =
((((uint64_type) ft_current.dwHighDateTime) << 32) |
((uint64_type) ft_current.dwLowDateTime)) - delta;
return unix_t(
// Определяем, сколько прошло секунд.
(time_t)( ( current ) / 10000000 ),
// А сколько микросекунд.
(unsigned long)( ( current % 10000000 + 5 ) / 10 ) );
}
для Unix-ов:
/*!
\since v.1.3.1
\brief Получение времени с точностью до микросекунды с
использованием gettimeofday.
*/inline unix_t
_os_get()
{
struct timeval tv;
struct timezone tz;
gettimeofday( &tv, &tz );
return unix_t(
// Определяем, сколько прошло секунд.
tv.tv_sec,
// А сколько микросекунд.
tv.tv_usec );
}
Disclaimer: код был написан несколько лет назад, поэтому уже не помню, откуда в Windows-версии взялись именно такие формулы.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Милисекунды
От:
Аноним
Дата:
08.09.06 08:22
Оценка:
Здравствуйте, Axc, Вы писали:
Axc>Здравствуйте, Аноним, Вы писали:
А>>каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)? Axc>Система? Axc>Если Windows, то GetSystemTime
Здравствуйте, <Аноним>, Вы писали:
А>Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?
Стандартных функций нет, а платформо-зависимых (и кроссплатформенных надстроек над ними) — можно поискать.
Например, винапишное — GetSystemTime / GetLocalTime, возвращает структуру SYSTEMTIME в которой есть поле миллисекунд.
А>>Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?
E>Я делал так (только с точностью до микросекунд):
Если не ошибаюсь, в Qt есть кроссплатформенные средства для работы со временем.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Милисекунды
От:
Аноним
Дата:
08.09.06 09:10
Оценка:
Здравствуйте, eao197, Вы писали:
А>>>Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?
E>>Я делал так (только с точностью до микросекунд):
E>А сейчас я просто использую: ACE_OS::gettimeofday()
E>Если не ошибаюсь, в Qt есть кроссплатформенные средства для работы со временем.
А стандартными средствами — никак?
Здравствуйте, Аноним, Вы писали:
А>А стандартными средствами — никак?
Насколько я знаю, в стандарте ANSI C нет средств определения времени с точностью для миллисекунд.
Функция gettimeofday это часть стандарта The Single UNIX ® Specification, Version 2.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Аноним, Вы писали:
А>Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?
Смотря для чего это? Если замерить время, то clock() подойдет.
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Здравствуйте, Аноним, Вы писали:
А>Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?
Как вапиант, с точностью до секуню можно получить time(), а милисекунды — через gettimeofday().
Бился я за силу державную,
А погиб — за Русь Православную... (с)Трофим
Аноним wrote:
> Товарищи программисты! Не могли бы вы подсказать, каким образом можно > получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?