Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 29 матра - перевод часов, считает не правельно 
:(
    Опции темы
chaos
Дата 17.4.2009, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



Всплыла ошибка в программе :( связанная с переводом часов.
Не могу понять то ли это косяк в либе ACE или же она типо слишком умная и сделала это за меня
Код

    struct tm stm;
    ACE_OS::memset(&stm, 0, sizeof(stm));
    stm.tm_year = 2009 - 1900;
    stm.tm_mon = 3 - 1;
    stm.tm_mday = 29;
    stm.tm_hour = 0;
    stm.tm_min = 0;
    stm.tm_isdst = -1;
    ACE_Time_Value value(ACE_OS::mktime(&stm));

    ACE_Date_Time tmp(value);
    ACE_DEBUG((LM_DEBUG, ACE_TEXT("%d-%02d-%02d %02d:%02d:%02d\n"),
            tmp.year(), tmp.month(), tmp.day(), tmp.hour(), tmp.minute(), tmp.second()));

    value += 10 * 3600;
    tmp.update(value);
    ACE_DEBUG((LM_DEBUG, ACE_TEXT("%d-%02d-%02d %02d:%02d:%02d\n"),
            tmp.year(), tmp.month(), tmp.day(), tmp.hour(), tmp.minute(), tmp.second()));

    ACE_Time_Value v2 = value;
    tmp.update(v2);
    v2 -= ACE_Time_Value(tmp.hour() * 3600 + tmp.minute() * 60 + tmp.second());
    tmp.update(v2);
    ACE_DEBUG((LM_DEBUG, ACE_TEXT("%d-%02d-%02d %02d:%02d:%02d\n"),
            tmp.year(), tmp.month(), tmp.day(), tmp.hour(), tmp.minute(), tmp.second()));

    ACE_ASSERT(value == v2);


суть в том что я к дате прибавляю некий час(больше 3) потом с результатом что-то делаю в другом месте и там же отрезаю часы минуты секунды. так изврщаться пришлось иза либы в которой нет нормальной обертки для работы со временем.(может у меня рожа кривая)

так вот 29 марта 2009г я прибавил к этой дате 10 часов. что-то поделал нужное и потом отрезал эти 10 часов способом показанным выше.

в результате
Код

2009-03-29 00:00:00
прибавил 10 часов
2009-03-29 11:00:00
отнял якобы 10 часов, по факту 11
2009-03-28 23:00:00



как можно решить проблему - что бы при прибавлении 10 часов время стало 
Код

2009-03-29 10:00:00
 как например в бусте(можно заюзать boost::date_time, но пока хочется решить проблему малой кровью smile )
Код

boost::gregorian::date d(2009, 3, 29);
boost::posix_time::ptime value2(d);
std::cout << value2 + boost::posix_time::hours(10) << std::endl;

Код

2009-Mar-29 10:00:00




Заранее благодарен!

PM WWW   Вверх
math64
Дата 17.4.2009, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



А какой у тебя компилятор? C++ Builder 5.0 считает что время перевоится в первое воскренье апреля, как в Америке, а Windows переводит часы, как положено, в последнее воскренье марта. В течение недели mktime() и т.д. работают неправильно.
PM   Вверх
chaos
Дата 17.4.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



math64, компиллер у меня gcc ms, но тут дело не в компилеер. дело в том что ACE делает лишнее на мой взгляд. вот хочется ухеать как это отключить smile по возможности не переписывая много
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.