Pokušavajući pronaći jednostavan PHP brojač za jedan moj mali projekt – sve više je nalikovalo na nemoguć zadatak. Brojaču se trebao zadati datum i on bi od njega računao što bi se već zadalo – koliko je sekundi/dana/mjeseci/godina/… prošlo od toga (zadanog) dana. Sve se naplaćivalo, sve je bilo vrlo opširno i/ili šlampavo napisano. Srećom, pronašao sam slijedeći dio koda kojeg ću ukratko i pojasniti.
<?php $start = "January 1, 1990"; // definiramo pocetni datum $sada = strtotime ("now"); // varijabli "sada" dodjeljujemo trenutno vrijeme $onda = strtotime ("$start"); // varijabli "onda" dodjeljujemo varijablu "start" tj. pocetni datum $razlika = $sada - $onda ; // izracunavamo razliku izmedu "sada" i "onda" $num = $razlika/86400; // dijelimo tu razliku sa 86400 kako bi dobili rezultat u danima, a ne u sekundama $num2 = ($num/365); // dijelimo broj dana sa 365 kako bi dobili godine $godina = intval($num2); // zaokruzujemo godine pomocu operatora intval $num3 = ($num - (intval($num2)*365)); // od ukupnog broja dana oduzimamo umnozak godina koje su prosle pomnozene sa brojem dana $mjeseci = intval($num3/30); // zaokruzujemo broj tj. mjesece ?> <p>Prošlo je <? echo $godina ?> godina i <? echo $mjeseci ?> mjeseci.</p>
Brojač započinje definirianjem početne varijable $start – izražava se datumom u striktno zadanom formatu (obliku) – “mjesec dan, godina”. Definirate datum od kojeg će brojač početi brojiti. U našem slučaju to je 1.1.1990. Zatim varijabli $sada dodjeljujemo sadašnji (trenutni) datum i vrijeme. Varijabli $onda dodjeljujemo varijablu $start (koju smo, podsjetimo se, postavili na početni datum). Zatim dva ključna reda – $razlika izračunava razliku između $sada i $onda – u sekundama!
Nakon što smo izračunali razliku zbog potrebe za godinama i mjesecima podijelimo sekunde sa 86400 (broj sekundi u jednom danu = 60 sekunda * 60 minuta * 24 sata) te dobimo izračun u danima. Taj broj dodijelimo varijabli $num.
Sada iz te varijable $num u kojoj su pohranjeni dani jednostavno čupamo van što nam treba i dijelimo/množimo kako bi dobili željeni vremenski period. Što to znači? Pod $num2 smo podijelili dane sa 365 kako bi dobili godine, a kod $num3 smo od ukupnog broja dana oduzeli umnožak godina i broja dana u godini kako bi nam ostali samo – mjeseci. Kod konačnih varijabli $godina i $mjeseci koristimo PHP operator intval koji – zaokružuje brojeve.
Kako to izgleda u praksi – možete pogledati na linku – Count-Up timer (PHP) gdje sam i dodao kako svaka varijabla izgleda uživo.