#sadrzaj: # #prijestupna($godina) #NickPastDate($maxdate) #NickHeaderToDate($date) #NickOlderDate($prvi, $drugi) #NickBeforeDate($maxdate, $date) #NickAfterDate($maxdate, $date) #ako je ulazna godina prijestupna, vraca 1, inace 0# sub prijestupna($godina) if ($godina%4==0) if ($godina%100==0) if ($godina%400==0) return(1) else return(0) endif else return(1) endif else return(0) endif endsub ####uzima broj vraca datum koji je bio pred toliko dana u obliku ddmmyyyy#### sub NickPastDate($maxdate) var ($god, $mjes, $dan, $sumdan, $maxdan, $maxgod, $maxmjes) decodetime(time, $god, $mjes, $dan) #uzima trenutacni datum if ($maxdate < $dan) # ako je trazeni dan u ovom mjesecu $maxdan = $dan - $maxdate $maxmjes = $mjes $maxgod = $god else #odredjuje koji je dan u godini if ($mjes = 1) $sumdan = $dan endif if ($mjes = 2) $sumdan = $dan + 31 endif if ($mjes = 3) $sumdan = $dan + 59 + prijestupna($god) endif if ($mjes = 4) $sumdan = $dan + 90 + prijestupna($god) endif if ($mjes = 5) $sumdan = $dan + 120 + prijestupna($god) endif if ($mjes = 6) $sumdan = $dan + 151 + prijestupna($god) endif if ($mjes = 7) $sumdan = $dan + 181 + prijestupna($god) endif if ($mjes = 8) $sumdan = $dan + 212 + prijestupna($god) endif if ($mjes = 9) $sumdan = $dan + 243 + prijestupna($god) endif if ($mjes = 10) $sumdan = $dan + 273 + prijestupna($god) endif if ($mjes = 11) $sumdan = $dan + 304 + prijestupna($god) endif if ($mjes = 12) $sumdan = $dan + 334 + prijestupna($god) endif if ($maxdate < $sumdan) #ako je dan u ovoj godini $sumdan = $sumdan - $maxdate $maxgod = $god else #ako je dan prije vise godina $maxgod = $god while($maxdate >= $sumdan) $maxgod = $maxgod - 1 $sumdan = $sumdan + 365 + prijestupna($maxgod) endwhile $sumdan = $sumdan - $maxdate endif if ($sumdan > 334 + prijestupna($maxgod)) #odredjuje mjesec trazenog dana, ostatak je dan u mjesecu $maxmjes = 12 $maxdan = $sumdan - 334 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 304 + prijestupna($maxgod)) $maxmjes = 11 $maxdan = $sumdan - 304 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 273 + prijestupna($maxgod)) $maxmjes = 10 $maxdan = $sumdan - 273 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 243 + prijestupna($maxgod)) $maxmjes = 9 $maxdan = $sumdan - 243 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 212 + prijestupna($maxgod)) $maxmjes = 8 $maxdan = $sumdan - 212 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 181 + prijestupna($maxgod)) $maxmjes = 7 $maxdan = $sumdan - 181 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 151 + prijestupna($maxgod)) $maxmjes = 6 $maxdan = $sumdan - 151 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 120 + prijestupna($maxgod)) $maxmjes = 5 $maxdan = $sumdan - 120 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 90 + prijestupna($maxgod)) $maxmjes = 4 $maxdan = $sumdan - 90 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 59 + prijestupna($maxgod)) $maxmjes = 3 $maxdan = $sumdan - 59 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 31) $maxmjes = 2 $maxdan = $sumdan - 31 $sumdan = 0 endif if ($sumdan > 0) $maxmjes = 1 $maxdan = $sumdan $sumdan = 0 endif endif return(str($maxdan,2)+str($maxmjes,2)+str($maxgod,2)) endsub ####iz Date headera daje datum u obliku ddmmyyyy#### sub NickHeaderToDate($date) var($artdan, $artmjes, $artgod) if (copy($date, 1, 1) == "M") $date = copy($date, 6, len($date)) endif if (copy($date, 1, 1) == "T") $date = copy($date, 6, len($date)) endif if (copy($date, 1, 1) == "W") $date = copy($date, 6, len($date)) endif if (copy($date, 1, 1) == "F") $date = copy($date, 6, len($date)) endif if (copy($date, 1, 1) == "S") $date = copy($date, 6, len($date)) endif $date = copy($date, 1, 11) if (copy($date, 11, 11) == " ") $date = copy($date, 1, 10) endif if (copy($date, 3, 1) == " ") $artdan = copy($date, 1, 2) $date = delete($date, 1, 3) else if (copy($date, 2, 1) == " ") $artdan = copy($date, 1, 1) $date = delete($date, 1, 2) endif endif if (copy($date, 1, 3) == "Jan") $artmjes = 1 $date = delete($date, 1, 3) endif if (copy($date, 1, 3) == "Feb") $artmjes = 2 $date = delete($date, 1, 3) endif if (copy($date, 1, 3) == "Mar") $artmjes = 3 $date = delete($date, 1, 3) endif if (copy($date, 1, 3) == "Apr") $artmjes = 4 $date = delete($date, 1, 3) endif if (copy($date, 1, 3) == "May") $artmjes = 5 $date = delete($date, 1, 3) endif if (copy($date, 1, 3) == "Jun") $artmjes = 6 $date = delete($date, 1, 3) endif if (copy($date, 1, 3) == "Jul") $artmjes = 7 $date = delete($date, 1, 3) endif if (copy($date, 1, 3) == "Aug") $artmjes = 8 $date = delete($date, 1, 3) endif if (copy($date, 1, 3) == "Sep") $artmjes = 9 $date = delete($date, 1, 3) endif if (copy($date, 1, 3) == "Oct") $artmjes = 10 $date = delete($date, 1, 3) endif if (copy($date, 1, 3) == "Nov") $artmjes = 11 $date = delete($date, 1, 3) endif if (copy($date, 1, 3) == "Dec") $artmjes = 12 $date = delete($date, 1, 3) endif $artgod = copy($date, 2, 5) $artdan = int($artdan) $artmjes = int($artmjes) $artgod = int($artgod) return(str($artdan,2)+str($artmjes,2)+str($artgod,2)) endsub ####prima dva ddmmyyyy datuma i ako je poredak: mladji, stariji daje -1, jednako stari daje 0, stariji, mladji daje 1#### sub NickOlderDate($prvi, $drugi) var ($prvigod, $drugigod, $prvimjes, $drugimjes, $prvidan, $drugidan) $prvidan = int(copy($prvi, 1, 2)) $prvimjes = int(copy($prvi, 3, 2)) $prvigod = int(copy($prvi, 5, 4)) $drugidan = int(copy($drugi, 1, 2)) $drugimjes = int(copy($drugi, 3, 2)) $drugigod = int(copy($drugi, 5, 4)) if ($prvigod > $drugigod) return(-1) endif if ( ($prvigod = $drugigod) & ($prvimjes > $drugimjes) ) return(-1) endif if ( ($prvigod = $drugigod) & ($prvimjes = $drugimjes) & ($prvidan > $drugidan) ) return(-1) endif if ( ($prvigod = $drugigod) & ($prvimjes = $drugimjes) & ($prvidan = $drugidan) ) return(0) endif if ($prvigod < $drugigod) return(1) endif if ( ($prvigod = $drugigod) & ($prvimjes < $drugimjes) ) return(1) endif if ( ($prvigod = $drugigod) & ($prvimjes = $drugimjes) & ($prvidan < $drugidan) ) return(1) endif endsub ####uzima datum u obliku ddmmyyyy i broj i vraca datum koji je # bio toliko dana prije $date u obliku ddmmyyyy#### sub NickBeforeDate($maxdate, $date) var ($god, $mjes, $dan, $sumdan, $maxdan, $maxgod, $maxmjes) $dan = int(copy($date, 1, 2)) $mjes = int(copy($date, 3, 2)) $god = int(copy($date, 5, 4)) if ($maxdate < $dan) # ako je trazeni dan u ovom mjesecu $maxdan = $dan - $maxdate $maxmjes = $mjes $maxgod = $god else #odredjuje koji je dan u godini if ($mjes = 1) $sumdan = $dan endif if ($mjes = 2) $sumdan = $dan + 31 endif if ($mjes = 3) $sumdan = $dan + 59 + prijestupna($god) endif if ($mjes = 4) $sumdan = $dan + 90 + prijestupna($god) endif if ($mjes = 5) $sumdan = $dan + 120 + prijestupna($god) endif if ($mjes = 6) $sumdan = $dan + 151 + prijestupna($god) endif if ($mjes = 7) $sumdan = $dan + 181 + prijestupna($god) endif if ($mjes = 8) $sumdan = $dan + 212 + prijestupna($god) endif if ($mjes = 9) $sumdan = $dan + 243 + prijestupna($god) endif if ($mjes = 10) $sumdan = $dan + 273 + prijestupna($god) endif if ($mjes = 11) $sumdan = $dan + 304 + prijestupna($god) endif if ($mjes = 12) $sumdan = $dan + 334 + prijestupna($god) endif if ($maxdate < $sumdan) #ako je dan u ovoj godini $sumdan = $sumdan - $maxdate $maxgod = $god else #ako je dan prije vise godina $maxgod = $god while($maxdate >= $sumdan) $maxgod = $maxgod - 1 $sumdan = $sumdan + 365 + prijestupna($maxgod) endwhile $sumdan = $sumdan - $maxdate endif if ($sumdan > 334 + prijestupna($maxgod)) #odredjuje mjesec trazenog dana, ostatak je dan u mjesecu $maxmjes = 12 $maxdan = $sumdan - 334 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 304 + prijestupna($maxgod)) $maxmjes = 11 $maxdan = $sumdan - 304 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 273 + prijestupna($maxgod)) $maxmjes = 10 $maxdan = $sumdan - 273 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 243 + prijestupna($maxgod)) $maxmjes = 9 $maxdan = $sumdan - 243 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 212 + prijestupna($maxgod)) $maxmjes = 8 $maxdan = $sumdan - 212 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 181 + prijestupna($maxgod)) $maxmjes = 7 $maxdan = $sumdan - 181 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 151 + prijestupna($maxgod)) $maxmjes = 6 $maxdan = $sumdan - 151 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 120 + prijestupna($maxgod)) $maxmjes = 5 $maxdan = $sumdan - 120 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 90 + prijestupna($maxgod)) $maxmjes = 4 $maxdan = $sumdan - 90 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 59 + prijestupna($maxgod)) $maxmjes = 3 $maxdan = $sumdan - 59 + prijestupna($maxgod) $sumdan = 0 endif if ($sumdan > 31) $maxmjes = 2 $maxdan = $sumdan - 31 $sumdan = 0 endif if ($sumdan > 0) $maxmjes = 1 $maxdan = $sumdan $sumdan = 0 endif endif return(str($maxdan,2)+str($maxmjes,2)+str($maxgod,2)) endsub ####uzima datum u obliku ddmmyyyy i broj i vraca datum koji ce # biti toliko dana poslije $date u obliku ddmmyyyy#### sub NickAfterDate($maxdate, $date) var ($god, $mjes, $dan, $sumdan, $maxdan, $maxgod, $maxmjes) $dan = int(copy($date, 1, 2)) $mjes = int(copy($date, 3, 2)) $god = int(copy($date, 5, 4)) $maxdan = $dan + $maxdate $maxmjes = $mjes $maxgod = $god while ( (($maxdan > 28 + prijestupna($maxgod)) && ($maxmjes == 2)) || (($maxdan > 30) && (($maxmjes == 4) || ($maxmjes == 6) || ($maxmjes == 9) || ($maxmjes == 11))) || ($maxdan > 31) ) if ($maxmjes == 2) $maxdan = $maxdan - 28 - prijestupna($maxgod) $maxmjes = $maxmjes + 1 endif if ($maxdan > 30) if (($maxmjes == 4) || ($maxmjes == 6) || ($maxmjes == 9) || ($maxmjes == 11)) $maxdan = $maxdan - 30 $maxmjes = $maxmjes + 1 endif endif if ($maxdan > 31) if (($maxmjes == 1) || ($maxmjes == 3) || ($maxmjes == 5) || ($maxmjes == 7) || ($maxmjes == 8) || ($maxmjes == 10)) $maxdan = $maxdan - 31 $maxmjes = $maxmjes + 1 endif if ($maxmjes == 12) $maxdan = $maxdan - 31 $maxmjes = 1 $maxgod = $maxgod + 1 endif endif endwhile return(str($maxdan,2)+str($maxmjes,2)+str($maxgod,2)) endsub