Jako iż odliczanie czasu może nam przydać się wielokrotnie, napiszemy sobie funkcję, która to będzie robiła, do roboty.
function CountDown($hour, $minute, $second, $month, $day, $year) {
}
Jako parametry należy podać kolejno: godzinę, minutę, sekundę, miesiąc, dzień, rok wydarzenia. Kolejnym krokiem będzie wygenerowanie sobie czasu w sekundach wydarzenia i dnia dzisiejszego.
$eventDate = mktime($hour, $minute, $second, $month, $day, $year);
$today = mktime();
I teraz możemy sobie już tworzyć poszczególne elementy daty i czasu po prostu dzieląc te sekundy.
$secondsTo = $eventDate - $today;
$minutesTo = round($secondsTo / 60);
$hoursTo = round($minutesTo / 60);
$daysTo = round($hoursTo / 24);
$weeksTo = round($daysTo / 7);
$monthsTo = round($weeksTo / 4);
$yearsTo = round($monthsTo / 12);
Teraz moglibyśmy sobie to już wszystko zwrócić, ale nie zawsze potrzebne będą nam wszystkie informację (np. chcę policzyć sobie ile zostało dni do wakacji i nie potrzebne mi są inne właściwości), dlatego umieścimy je w tablicy.
$values = array(
"seconds" => $secondsTo,
"minutes" => $minutesTo,
"hours" => $hoursTo,
"days" => $daysTo,
"weeks" => $weeksTo,
"months" => $monthsTo,
"years" => $yearsTo
);
Teraz zostało nam tylko tę tablicę zwrócić.
return $values;
I mamy gotową funkcję do odliczania czasu do konkretnej daty, teraz może zaprezentuję przykład użycia. Np. odliczanie do końca świata, który ma się wydarzyć 21 maja, 2012 roku. :)
$endWorld = CountDown(12, 0, 0, 12, 21, 2012);
?>
<h2>Koniec świata nastąpi za:</h2>
<ul>
<li><?php echo $endWorld['years']; ?> lat</li>
<li><?php echo $endWorld['months']; ?> miesięcy</li>
<li><?php echo $endWorld['weeks']; ?> tygodni</li>
<li><?php echo $endWorld['days']; ?> dni</li>
<li><?php echo $endWorld['hours']; ?> godzin</li>
<li><?php echo $endWorld['minutes']; ?> minut</li>
<li><?php echo $endWorld['seconds']; ?> sekund</li>
</ul>
To wszystko, dziękuję za uwagę i pozdrawiam.
Listing
function CountDown($hour, $minute, $second, $month, $day, $year) {
$eventDate = mktime($hour, $minute, $second, $month, $day, $year);
$today = mktime();
$secondsTo = $eventDate - $today;
$minutesTo = round($secondsTo / 60);
$hoursTo = round($minutesTo / 60);
$daysTo = round($hoursTo / 24);
$weeksTo = round($daysTo / 7);
$monthsTo = round($weeksTo / 4);
$yearsTo = round($monthsTo / 12);
$values = array(
"seconds" => $secondsTo,
"minutes" => $minutesTo,
"hours" => $hoursTo,
"days" => $daysTo,
"weeks" => $weeksTo,
"months" => $monthsTo,
"years" => $yearsTo
);
return $values;
}
?>