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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> считать время и дату, Чо с часиками делать? 
V
    Опции темы
JAnty
  Дата 6.4.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

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



Извеняюсь за название темы, не счИтать, а счЕтать(щетать)

Пользователь может прибавить время (только часы) к имеющимуся.
Вот функция:

Код

void c_stime::ConvertTime(int CHAS=4)
{
// DataTime = "\n54196 07-04-06 10:32:22 50 0 0  76.8 UTC(NIST) *\n"

 sTmp = DataTime[8]; sTmp = sTmp + DataTime[9]; sTmp = "20" + sTmp;
 YYYY = StrToInt(sTmp); //год

 sTmp = DataTime[11]; sTmp = sTmp + DataTime[12];
 MM = StrToInt(sTmp); // месяц

 sTmp = DataTime[14]; sTmp = sTmp + DataTime[15];
 DD = StrToInt(sTmp); // день

 sTmp = DataTime[17]; sTmp = sTmp + DataTime[18];
 hh = StrToInt(sTmp); // часы

 sTmp = DataTime[20]; sTmp = sTmp + DataTime[21];
 mm = StrToInt(sTmp); // минуты

 sTmp = DataTime[23]; sTmp = sTmp + DataTime[24];
 ss = StrToInt(sTmp); // секунды
 ////

 hh = hh + CHAS; // вместо 4 может быть любое положительное число.
}

Если hh станет > 23, то как узнать сколько будет часов, там ещё и DD+1, возможно и MM+1 и даже YYYY+1.

Чтото я не могу сообразить, чтоб hh было от 00 до 23. Ведь там может быть не +4 часа, а +58 например...  smile 
switch'ом может как нибудь все месяца разложить или ещё как, подкинте плиз идейку как это можно реализовать.
 smile 

Это сообщение отредактировал(а) JAnty - 6.4.2007, 13:53


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
zkv
Дата 6.4.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



можно сразу конвертировать дату в количество часов (если это наименьший изменяемый элемент), потом прибавить что надо, потом конвертировать обратно. Написать функции конвертации, думаю, совсем несложно. Удачи!

Цитата

Извеняюсь за название темы, не счИтать, а счЕтать(щетать)

Это шутка такая?

Это сообщение отредактировал(а) zkv - 6.4.2007, 13:56
PM MAIL   Вверх
JAnty
  Дата 6.4.2007, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

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



Цитата(zkv @  6.4.2007,  13:52 Найти цитируемый пост)
Это шутка такая?

Может кто подумает считать - как считывать из фаула например, а тут бац, щетать надо а не читать.

Значит мне надо сначало число месяца умножать на 24 а потом делить, всё только в часах а не в месяцах, это в принципе хорошая идея, это как учили в школе, всё преобразовать в одно, система СИ(по физике).
Я боюсь очень запутаться в том, сколько дней в месяце.


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Xenon
Дата 6.4.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата
Извеняюсь за название темы, не счИтать, а счЕтать(щетать)

 smile 

А по теме ... Если тапорно, то:
Код

while (ss >= 60)
{
    ++mm;
    ss -= 60;
}
while (mm >= 60)
{
    ++hh;
    mm -= 60
}
while (hh >= 24)
{
    ++DD;
    hh -= 24;
}
/*и т.д*/



Это сообщение отредактировал(а) Xenon - 6.4.2007, 14:48


--------------------
user posted image  
PM MAIL   Вверх
JAnty
  Дата 6.4.2007, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

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



Вот так сделал:
Плюсуем только часы!
Код

 hh = hh + 4;
 if(hh >= 24)
 {
    hh = hh - 24; // тут надо цикл вычитающий 24 до тех пор пока hh <= 24
    DD = DD + 1;// а потом прибовляем n дней равное кол-во итераций где hh-24 было.
    switch(MM)
    {
     case 1: if(DD > 31){ MM = 2; DD = 1;} break; // ну и тут DD не 1, а относитель сколько добавилось
     case 2: if(DD > 28){ MM = 3; DD = 1;} break;
     case 3: if(DD > 31){ MM = 4; DD = 1;} break;
     case 4: if(DD > 30){ MM = 5; DD = 1;} break;
     case 5: if(DD > 31){ MM = 6; DD = 1;} break;
     case 6: if(DD > 30){ MM = 7; DD = 1;} break;
     case 7: if(DD > 31){ MM = 8; DD = 1;} break;
     case 8: if(DD > 31){ MM = 9; DD = 1;} break;
     case 9: if(DD > 30){ MM = 10; DD = 1;} break;
     case 10: if(DD > 31){ MM = 11; DD = 1;} break;
     case 11: if(DD > 30){ MM = 12; DD = 1;} break;
     case 12: if(DD > 31){ MM = 1; DD = 1; YYYY + 1;} break;
    }// end switch;
 }// end if;  


Это сообщение отредактировал(а) JAnty - 6.4.2007, 17:18


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Fazil6
Дата 6.4.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(JAnty @  6.4.2007,  17:12 Найти цитируемый пост)
case 2: if(DD > 28){ MM = 3; DD = 1;} break;

А високосный год?
PM MAIL   Вверх
JAnty
  Дата 6.4.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

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



Цитата(Fazil6 @  6.4.2007,  17:14 Найти цитируемый пост)
А високосный год? 


исключон!!!

Добавлено @ 17:21
Один раз в четыре года, моя прога не запустится просто!



Это сообщение отредактировал(а) JAnty - 6.4.2007, 18:24


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0847 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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