Funkcje daty i czasu
Umiejętność operowania datami i czasem jest niezbędna w większości aplikacji. Podczas tych zajęć poznamy niektóre funkcje wbudowane umożliwiające działania na datach i czasie. Dla jasności rozróżnia się datę i czas, chociaż tak naprawdę obie te wartości pokazują jakiś punkt na linii czasu, czy mówiąc inaczej ile czasu upłynęło od jakiejś umownej daty i umownego czasu.
Ćwiczenie 5_0_0_1. Wyświetlanie aktualnej daty i czasu za pomocą funkcji date()
Funkcja ta pobiera dwa paramety, przy czym drugi jest opcjonalny. Pierwszy argument mówi w jakim formacie data ma być pokazana, natomiast drugi parametr jest znacznikiem czasu Uniksa i w naszym przykładzie nie będziemy go stosować.
Zadanie polega na wyświetleniu aktualnej daty na stronie akt_data1.php
. W dokumncie HTML, umieść następujący kod:
<!doctype html>
<html>
<head>
<title>Testowanie skryptów PHP</title>
<meta charset="utf-8" />
</head>
<body>
<?php
echo 'Aktualna data i czas: '.date('d.m.Y G:i');
?>
</body>
</html>
Pokazaliśmy przykładowy sposób formatowania. Kodów formatowania jest wiele - poszukaj je w opisie tej funkcji, na przykład tutaj.
Ćwiczenie 5_0_0_2. Uzyskanie informacji o aktualnej dacie i czasie za pomocą funkcji getdate()
Ta funkcja zwraca tablicę asocjacyjną zawierającą informacje o aktualnej dacie i aktualnym czasie.
- klucz
seconds
- sekundy w postaci liczby - klucz
minutes
- minuty w postaci liczby - klucz
hours
- godziny w postaci liczby - klucz
mday
- dzień miesiąca w postaci liczby - klucz
wday
- dzień tygodnia w postaci liczby - klucz
mon
- miesiąc w postaci liczby - klucz
year
- rok w postaci liczby - klucz
yday
- dzień roku w postaci liczby - klucz
weekday
- nazwa dnia tygodnia - klucz
month
- nazwa miesiąca
Zadanie polega na wyświetleniu informacji o aktualnej dacie i czasie na stronie akt_data2.php
. W dokumncie HTML, umieść następujący kod PHP:
<?php
$data_czas=getdate();
echo $data_czas['seconds'].' - sekundy w postaci liczby<br />';
echo $data_czas['minutes'].' - minuty w postaci liczby<br />';
echo $data_czas['hours'].' - godziny w postaci liczby<br />';
echo $data_czas['mday'].' - dzień miesiąca w postaci liczby<br />';
echo $data_czas['wday'].' - dzień tygodnia w postaci liczby<br />';
echo $data_czas['mon'].' - miesiąc w postaci liczby<br />';
echo $data_czas['year'].' - rok w postaci liczby<br />';
echo $data_czas['yday'].' - dzień roku w postaci liczby<br />';
echo $data_czas['weekday'].' - nazwa dnia tygodnia<br />';
echo $data_czas['month'].' - nazwa miesiąca';
?>
Ćwiczenie 5_0_0_3. Sprawdzanie poprawności daty za pomocą funkcji checkdate()
Nie każda data jest poprawna - np. 31.02.2014 jest zapisem błędnym, ponieważ na pewno luty nie ma 31 dni. Funkcja checkdate($miesiac,$dzien,$rok)
zwraca true
lub false
. Zadanie polega na wykonaniu strony data_ok.php
na której wyświetlone będą informacje o poprawności dat 31.02.2014 oraz 3.04.2015.
<?php
if (checkdate(2,31,2014)) echo 'Data 31.02.2014 jest poprawna<br />';
else echo 'Data 31.02.2014 jest błędna<br />';
if (checkdate(4,3,2015)) echo 'Data 3.04.2015 jest poprawna';
else echo 'Data 3.04.2015 jest błędna';
?>
Ćwiczenie 5_0_0_4. Sprawdzenie czy dany rok jest przestępny
Tym razem zdefiniujemy własną funkcję. Wiemy, że w roku przestępnym luty ma 29 zamiast 28 dni i dlatego rok ma wtedy 366, zamiast 365 dni. Powinniśmy również wiedzieć, żo rok przestępny dzieli się całkowicie przez 4 oraz nie dzieli się całkowicie przez 100, albo dzieli się całkowicie przez 400. Jeżeli to wiemy, to zdefiniowanie funkcji pozostaje formalnością. Wykonaj stronę przestepny.php
, na której użytkownik może sprawdzić, czy wpisany przez niego rok jest przestępny.
<!doctype html>
<html>
<head>
<title>Testowanie skryptów PHP</title>
<meta charset="utf-8" />
</head>
<body>
<form action="przestepny.php" method="post">
Podaj rok <input type="text" name="rok" />
<input type="submit" name="sprawdz" value="Sprawdź czy jest przestępny" />
</form>
<?php
function przestepny($rok)
{
return ($rok%4==0 && $rok%100!==0) || $rok%400===0;
}
if (!isset($_POST['sprawdz'])) exit;
$rok=$_POST['rok'];
if (przestepny($rok)) echo 'Rok '.$rok.' jest przestępny';
else echo 'Rok '.$rok.' nie jest przestępny';
?>
</body>
</html>