![]() |
|
|
![]()
|
|
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
В программе используется функция ftime, чтобы задать текущее время в формате Unix платформы. Отсчет ведется от 01.01.1970 00:00:00. Теперь задача состоит в том, чтобы введенное пользователем время и дату перевести в этот же формат. Какую функцию можно для этого использовать?
|
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 3 Всего: 58 |
В каком формате дату вводит пользователь? Если в TDateTime, то
http://juravskiy.ru/?p=140 Это сообщение отредактировал(а) Keeper89 - 30.6.2009, 20:16 |
|||
|
||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Keeper89, пользователь вводит в TDateTime. Попробую Ваши функции, спасибо за помощь.
|
|||
|
||||
| Aline |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Что то у меня не работает...
Может быть приведенный код как то поможет:
где Time_count - это:
Теперь задача стоит обратная, зная tx_header.tx_timestamp_high и tx_header.tx_timestamp_low получить time и сверить со значениями заданными пользователем. time = (pktinfo.tx_timestamp_high << 32) + pktinfo.tx_timestamp_low; А промежутки времени, заданные пользователем: unsigned __int64 beg = DateTimeToUnix(dtpTimeBeg->DateTime); unsigned __int64 end = DateTimeToUnix(dtpTimeEnd->DateTime); Но почему то time никак не попадает в эти промежутки, хотя должен.... т.е. условие: if ((time >= beg)&&(time <= end)) {...} никогда не выполняется |
||||
|
|||||
| Aline |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Вообщем разобрались мы. Во-первых, время в наносекундах, поэтому beg и end надо умножить на 1000000000. Во вторых time неправильно считался, правильнее так:
time = pktinfo.tx_timestamp_high; time = (time << 32) + pktinfo.tx_timestamp_low; Плюс неучтен был переход на летнее время и часовой пояс |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Keeper89, это конечно все замечательно, но достаточно подключить <DateUtils.hpp> и воспользоваться услугами Билдера в лице DateTimeToUnix / UnixToDateTime. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |