Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
yes 09.03.2004 14:00
Вобщем захотелось мне написать метод, который считает разницу между входной датой и текущей (при необходимости с roll) и возвращает хеш. С той точностью, с которой у казана входящая дата. Т.е. вполне возможно, что с точностью до секунды. Написал основную часть. Ничего другого не придумал, как воспользоваться вложенными один в другой циклами:^for[iyear]($src.year;$now.year){ ^for[imonth](^if($iyear == $src.year && def $src.month){$src.month}{1};^if($iyear == $now.year){$now.month}{12}){ $c[^date:calendar[rus]($iyear;$imonth)] $c[^table::create{day ^c.menu{^for[i](0;6){^if(def $c.$i){^c.$i.int[]} }}}] $dpm[^c.count[]] ^for[iday](^if($imonth == $src.month && $iyear == $src.year && def $src.day){$src.day}{1};^if($imonth == $now.month && $iyear == $now.year){$now.day}{$dpm}){ ^for[ihour](^if($iday == $src.day && $imonth == $src.month && $iyear == $src.year && def $src.hour){$src.hour}{1};^if($iday == $now.day && $imonth == $now.month && $iyear == $now.year){$now.hour}{24}){ ^for[iminute](^if($ihour == $src.hour && $iday == $src.day && $imonth == $src.month && $iyear == $src.year && def $src.minute){$src.minute}{1};^if($ihour == $now.hour && $iday == $now.day && $imonth == $now.month && $iyear == $now.year){$now.minute}{60}){ ^for[isecond](^if($iminute == $src.minute && $ihour == $src.hour && $iday == $src.day && $imonth == $src.month && $iyear == $src.year && def $src.second){$src.second}{1};^if($iminute == $now.minute && $ihour == $now.hour && $iday == $now.day && $imonth == $now.month && $iyear == $now.year){$now.second}{60}){ $result.seconds_total(^eval($result.seconds_total + 1)) } $result.seconds(^eval($result.seconds_total%60)) $result.minutes_total(^eval($result.seconds_total\60)[%.0f]) } $result.minutes(^eval($result.minutes_total%60)) $result.hours_total(^eval($result.minutes_total\60)[%.0f]) } $result.hours(^eval($result.hours_total%60)) $result.days_total(^eval($result.hours_total\24)[%.0f]) } $result.days(^eval($result.days_total%$dpm)) $result.months_total(^eval($result.days\$dpm)[%.0f]) $result.months(^eval($result.months_total % 12)) } $result.years(^eval($result.months_total\12)[%.0f]) $result.years_total($result.years) }Этот код даже разницу в один день хрен знает сколько считает.