POWRÓT NA STRONĘ SZKOŁY

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>