Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Про время |
Автор: qaz 26.3.2002, 17:28 |
как перевести разницу во времени в кол - во секунд. То есть данное время 16.00 , второе время 13.03 и надо узнать сколько точно секунд между ними (это для прогреес бара таймера, если есть др. способ подскажите) ЗЫ пытался что то придумать, но почему то иногда получаются левые пару тройку секунд или минут. Вот алгортм hourc=m_set.GetHour(); minc=m_set.GetMinute(); sec=m_time.GetSecond(); hour=m_time.GetHour(); min=m_time.GetMinute(); if(hourc<hour) { if(hour>12) houre=24-hour+hourc; else houre=12-hour+hourc; } else houre=hourc-hour; if(minc<min) { mine=60-minc+min; if(hourc-hour==0) houre=24; houre=houre-1; } else mine=minc-min; //if(minc==0 || minc==60) houre=houre-1; p=((houre*60+mine)*60);//-(sec); p=p-p/14; m_prog.SetRange(0,p); m_prog.SetStep(1); где hourc, minc, sec - конечное время hour, min - начальное время p -кол-во делений в прогресс баре (его имнно мне и надо точно узнать) ![]() ![]() |
Автор: Sheff 26.3.2002, 17:42 |
Попробуй использовать MFC класс CTimeSpan, это разница двух объектов CTime, в нём есть всякие функции форматирования времени |
Автор: TwoK 26.3.2002, 17:47 |
Ну так вот. Время в виндах лежит в формате "количество секунд с даты 1 января 1ххх" (если не изменяет склероз, с 1970 или с 1870, неважно). Так вот, например, в Билдере я могу сделать TDateTime time1, time2, time3; time1 = "10.01.2002 13:00"; time2 = "10.01.2002 16:01" и потом сделать time3 = time2 - time 1 и в time3 я получу "00.00.0000 03:01" Ну эти тексты есссно после переформатирования в String. |
Автор: keisik 26.3.2002, 19:34 | ||
Если ты сам снимаешь время в моменты замера, а не используешь откуда-нибудь, и в перерывах между ними комп не выключается - есть смысл юзать DWORD timeGetTime(); Она тебе вернёт с точностью до миллисекунд. А если ты вычисляешь разницу между уже указанными временами - то действительно CTimeSpan и CTime или вот так:
|
Автор: qaz 26.3.2002, 21:37 |
Пасиба всем ![]() |
Автор: derevenge 14.4.2007, 10:19 |
А как можно поменять системное время? ![]() |
Автор: fantast 14.4.2007, 10:33 |
системное SetSystemTime() локальное SetLocalTime() это апишные функции |
Автор: derevenge 16.4.2007, 17:37 |
сможешь привести пример по изменению даты на 1 час 1 минуту и 1 секунуд назад? ![]() |
Автор: console 16.4.2007, 19:40 | ||||||||
lpSystemTime указывает на SYSTEMTIME, структуру, содержащую текущее системное время и дату... структура SYSTEMTIME:
Создаем временную структуру SYSTEMTIME.... считываем в нее текущее время:
отнимаем от часов, минут и секунд единицу... юзаем
если где ошибся, или предложил нерациональный вариант, поправьте plz... только начинаю изучение winAPI |