BAZA WIEDZY
KURSY
Bazy danych w PHP
Kurs AdvancedAJAX
Kurs ASP
Kurs ASP.NET
Kurs C++
Kurs CSS
Kurs HTML
Kurs HTML drugi
Kurs JavaScript
Kurs MySQL
Kurs PHP
Kurs RSS
Kurs XHTML
Obiekty DOM
MANUALE
CSS1 - W3C
DOM - w budowie
PHP 2005
PHP 2006
Wyrażenia regularne
SHOUTBOX
STAT
Online: 122 | UU: 3342

Porównywanie dat

Daty mogą być porównywane tylko i wyłącznie jeśli są przechowywane w tym samym formacie. Jako że w PHP nie ma zmiennej typu "data", musi być ona przechowywana jako timestamp lub tekst. Z kolei postać tekstowa może być skrajnie różna zależnie od standardów narodowych czy też fantazji programisty - tu widać przewagę formatu timestamp.

Jeśli daty są już w tej samej postaci, można je porównać po prostu przez operator porównania. Dodatkowo, jeśli data jest w formacie timestamp, można użyć operatorów matematycznych (< czy >;) dla ustalenia która data jest "nowsza".

Przykład 12.10. Porównywanie daty w formacie timestamp



<?php
   $time1 
mktime(19300);
   
$time2 mktime(2000);
   if (
$time1 $time2) {
      echo 
"Czas w zmiennej time1 jest późniejszy";
   } else {
      echo 
"Czas w zmiennej time2 jest późniejszy";
   }
?>

Porównywanie dat w formacie timestamp jest łatwe, jeśli potrzebne jest porównanie z dokładnością "co do sekundy". Sprawa się komplikuje, jeśli potrzebne jest stwierdzenie, na przykład czy dwie daty są z tego samego dnia. Aby to stwierdzić, trzeba rozbić datę i porównywać składowe. Kod taki można przenieść do osobnej funkcji, aby wygodnie porównywać daty.

Przykład 12.11. Sprawdzanie czy daty są z tego samego dnia



<?php
   
function sameDay($ts1$ts2)
   {
      if (
date("Y"$ts1) != date("Y"$ts2)) {
         return 
False;
      }
      if (
date("m"$ts1) != date("m"$ts2)) {
         return 
False;
      }
      if (
date("d"$ts1) != date("d"$ts2)) {
         return 
False;
      }
      return 
True;
   }
   
$date1 mktime(1930012102001);   
   
$date2 mktime(1012012102001);   
   
$date3 mktime(1930012112001);   
   if (
sameDay($date1$date2)) {
      echo 
"Daty 1 i 2 są z tego samego dnia";
   }
   if (
sameDay($date1$date3)) {
      echo 
"Daty 1 i 3 są z tego samego dnia";
   }
?>
Copyright © 2006-2011 egrafik.pl | Kontakt | Reklama | Projekty domów
jocker