Автор
|
Тема: Возвращаемся к разности двух дат!
|
SUnteXx |
опубликован 01-11-2001 14:55 MSK
Всем, Hlo! Я хотел спросить и спрашиваю, кто-нить знает как вручную сделать разность двух дат! Если есть структура аляstruct DAY { int iYears, iDays, iMonth, iHours, iMin, iSec; }; Со всякими mktime мы уже разобрались! Не катит! Еще раз, как ВРУЧНУЮ сделать разность двух дат!
|
Sourcer
|
опубликован 01-11-2001 15:20 MSK
Как предложил server_mouse int y1,y2,m1,m2;//типа вычисляем скока дней в году и скока дней в месяце if(first_month!=1&&first_month!=2) if(first_month%2==0) m1=31; else m1=30; if(if(first_month==1) m1=31; if(first_month==2) if(first_year%4==0) {m1=29; y1=366} else {m1=28 y1=365}; .......... так ещё и для y2 и m2, ноуже со второй датой ..........
double Sum1=first_year*((y1*24+24/4)*60*60)+first_month*m1*24*60*60+first_day*24*60*60+first_hour*60*60+first_min*60+first_sec;
double Sum2=second_year*((y2*24+24/4)*60*60)+second_month*m2*24*60*60+second_day*24*60*60+second_hour*60*60+second_min*60+second_sec; result=abs(Sum1-Sum2); Ну вот и разность....:))))))))) ТОлько в чём...:)))(Х/З) На слабых компах не работает... На 1ом пне у меня неработает, но на третем работала...:))
|
Flex Ferrum
|
опубликован 01-11-2001 16:04 MSK
В таком случае (если mktime не подходит) - делай иначе: переводи твоую структуру в юлианскую дату (получится одно большое число) - и делай с ним что хош. Как перевести в юлианскую дату - это уже другой вопрос. Сам я на вскидку не помню, но в инете, я думаю, нарыть можно. |
server_mouse
|
опубликован 01-11-2001 16:07 MSK
>Ну вот и разность....:))))))))) >ТОлько в чём...:)))(Х/З)В секундах. >На слабых компах не работает... >На 1ом пне у меня неработает, но на третем работала...:)) %| ПОЧЕМУ??? |
Sourcer
|
опубликован 01-11-2001 16:42 MSK
Незнаю почему, но я пробовал... не работает на 1ом пне, но на 3ем пашет... Может соопрцессор не выдерживает или чё то ещё...Короче хрень какая то ...
|
Demo_S
|
опубликован 04-11-2001 02:27 MSK
можетя чего не понимаю, но что вам мешает сделать так пусть есть д1.м1.г1 и д2.м2.г2 считаем сколько дней прогло от 1.1.г1 до д1.м1.г1 (массив из количества дней в месяцах проходим циклом+ если м1>1 и год високосный, то прибавляем 1) получим ДД11 считаем, сколько дней прошло от 1.1.г1 до 1.1.г2 (опять же циклом, чтобы учитывать високосность)получим ДД12 счтаем сколько дней прошло от 1.1.г2 до д2.м2.г2 получим ДД22 искомое равно ДД22+ДД12-ДД11 если первая дата меньше второй и ДД11+ДД12-ДД22 иначе.вроде должно работать. если нужен пример - пиши. может даже класс для времени наваяю:)) |