| Новости | 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)
}Этот код даже разницу в один день хрен знает сколько считает.