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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Про время 
:(
    Опции темы
qaz
Дата 26.3.2002, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 407
Регистрация: 25.3.2002

Репутация: нет
Всего: 4



как перевести разницу во времени в кол - во секунд. То есть данное время 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 -кол-во делений в прогресс баре (его имнно мне и надо точно узнать) :sneaky2  :notify


--------------------
http://www.tuneart.com

"Software is like sex, it's better when it's free." - Linus Torvalds
PM MAIL   Вверх
Sheff
Дата 26.3.2002, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 503
Регистрация: 25.3.2002
Где: Зеленоград

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



Попробуй использовать MFC класс CTimeSpan, это разница двух объектов CTime, в нём есть всякие функции форматирования времени


--------------------
--------------------------
Шеф всегда прав :)
PM MAIL WWW ICQ   Вверх
TwoK
  Дата 26.3.2002, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 25.3.2002

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



Ну так вот.

Время в виндах лежит в формате "количество секунд с даты 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.


--------------------
Говорят, что население в стране все меньше и меньше. А народу по утрам в метро почему-то все больше и больше...
PM MAIL   Вверх
keisik
Дата 26.3.2002, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 25.3.2002

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



Если ты сам снимаешь время в моменты замера, а не используешь откуда-нибудь, и в перерывах между ними комп не выключается - есть смысл юзать DWORD timeGetTime(); Она тебе вернёт с точностью до миллисекунд.
А если ты вычисляешь разницу между уже указанными временами - то действительно CTimeSpan и CTime или вот так:
Код

COleDateTime t1( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999
COleDateTime t2( 1999, 3, 20, 22, 15, 0 ); // 10:15PM March 20, 1999

// Subtract 2 COleDateTimes
COleDateTimeSpan ts = t2 - t1;

// one day is 24 * 60 * 60 == 86400 seconds
ASSERT( ts.GetTotalSeconds() == 86400L );

// Add a COleDateTimeSpan to a COleDateTime.
ASSERT( ( t1 + ts ) == t2 );

// Subtract a COleDateTimeSpan from a COleDateTime.
ASSERT( ( t2 - ts ) == t1 );

--------------------
...None of that can stop us now,we will make it through somehow...
PM MAIL   Вверх
qaz
Дата 26.3.2002, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 407
Регистрация: 25.3.2002

Репутация: нет
Всего: 4



Пасиба всем :laugh помогло !


--------------------
http://www.tuneart.com

"Software is like sex, it's better when it's free." - Linus Torvalds
PM MAIL   Вверх
derevenge
Дата 14.4.2007, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.4.2007

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



А как можно поменять системное время? smile 
PM MAIL   Вверх
fantast
Дата 14.4.2007, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 10.12.2006
Где: минск, столица на шей Родины

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



Цитата(derevenge @  14.4.2007,  10:19 Найти цитируемый пост)
А как можно поменять системное время?  

системное SetSystemTime()
локальное SetLocalTime()
это апишные функции
--------------------
Эпитафия: Он старался.                                   Неизвестный
PM MAIL   Вверх
derevenge
Дата 16.4.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.4.2007

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



сможешь привести пример по изменению даты на 1 час 1 минуту и 1 секунуд назад? smile 
PM MAIL   Вверх
console
Дата 16.4.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.2.2007
Где: Belarus::Minsk

Репутация: 1
Всего: 3



Код

BOOL SetSystemTime(CONST SYSTEMTIME *lpSystemTime);


lpSystemTime указывает на SYSTEMTIME, структуру, содержащую текущее системное время и дату...

структура SYSTEMTIME:

Код

typedef struct _SYSTEMTIME
{
    WORD wYear; 
    WORD wMonth; 
    WORD wDayOfWeek; 
    WORD wDay; 
    WORD wHour; 
    WORD wMinute; 
    WORD wSecond; 
    WORD wMilliseconds; 
} SYSTEMTIME;


Создаем временную структуру SYSTEMTIME.... считываем в нее текущее время:
Код

GetSystemTime(&tmp_SYSTIME);

отнимаем от часов, минут и секунд единицу...


юзаем 
Код

SetSystemTime(&tmp_SYSTIME);



если где ошибся, или предложил нерациональный вариант, поправьте plz... только начинаю изучение winAPI


--------------------
user posted image
Nothing is impossible
My WeBlog
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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