Милисекунды
От: Аноним  
Дата: 08.09.06 08:07
Оценка:
Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?
Re: Милисекунды
От: Axc  
Дата: 08.09.06 08:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?

Система?
Если Windows, то GetSystemTime
Re: Милисекунды
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 08.09.06 08:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с 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

Linux RedHat 9.0
Re: Милисекунды
От: Кодт Россия  
Дата: 08.09.06 08:42
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?


Стандартных функций нет, а платформо-зависимых (и кроссплатформенных надстроек над ними) — можно поискать.
Например, винапишное — GetSystemTime / GetLocalTime, возвращает структуру SYSTEMTIME в которой есть поле миллисекунд.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[2]: Милисекунды
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 08.09.06 08:54
Оценка:
А>>Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?

E>Я делал так (только с точностью до микросекунд):


А сейчас я просто использую: ACE_OS::gettimeofday()

Если не ошибаюсь, в Qt есть кроссплатформенные средства для работы со временем.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Милисекунды
От: Аноним  
Дата: 08.09.06 09:10
Оценка:
Здравствуйте, eao197, Вы писали:

А>>>Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?


E>>Я делал так (только с точностью до микросекунд):


E>А сейчас я просто использую: ACE_OS::gettimeofday()


E>Если не ошибаюсь, в Qt есть кроссплатформенные средства для работы со временем.

А стандартными средствами — никак?
Re[4]: Милисекунды
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 08.09.06 09:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А стандартными средствами — никак?


Насколько я знаю, в стандарте ANSI C нет средств определения времени с точностью для миллисекунд.
Функция gettimeofday это часть стандарта The Single UNIX ® Specification, Version 2.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Милисекунды
От: _Pete_ Россия  
Дата: 08.09.06 09:27
Оценка:
Здравствуйте, Аноним, Вы писали:
А>А стандартными средствами — никак?

если очень нужны стандартные средства можно попробовать

http://unixhelp.ed.ac.uk/CGI/man-cgi?ftime+3

у МС есть тоже
Re: Милисекунды
От: dr.Chaos Россия Украшения HandMade
Дата: 08.09.06 14:19
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?


Смотря для чего это? Если замерить время, то clock() подойдет.
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re: Милисекунды
От: Tikhonoff Россия  
Дата: 10.09.06 04:16
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Товарищи программисты! Не могли бы вы подсказать, каким образом можно получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?


Как вапиант, с точностью до секуню можно получить time(), а милисекунды — через gettimeofday().
Бился я за силу державную,
А погиб — за Русь Православную... (с)Трофим
Re: Милисекунды
От: MaximE Великобритания  
Дата: 10.09.06 21:32
Оценка:
Аноним wrote:

> Товарищи программисты! Не могли бы вы подсказать, каким образом можно

> получить значение текущего времени в виде ЧЧ:ММ:СС:МСМС (т.е. с Subj)?

         timeval now;
         gettimeofday(&now, 0);
         tm t;
         localtime_r(&now.tv_sec, &t);


Далее asctime/strftime/snprintf.

--
Maxim Yegorushkin

No Microsoft product was used in any way to write or send this text.
If you use a Microsoft product to read it, you're doing so at your own risk
Posted via RSDN NNTP Server 2.0
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.