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: 121 | UU: 3348

Tworzenie daty względnej do aktualnej (np. 'za 2 dni')

W PHP niejako standardowym sposobem przechowywania informacji o dacie jest wspomniany wcześniej format timestamp. Modyfikacje takiego zapisu przeprowadza się przez dodanie lub odjęcie odpowiedniej liczby sekund. Na przykład, aby stworzyć datę o godzinę w przód od aktualnej, wystarczy dodać do niej 3600 sekund, czyli tyle, ile jest w sekund w godzinie.

Przykład 12.7. Tworzenie daty o godzinę w przód



<?php
   $czas_akt 
time();
   
$za_godz $czas_akt 3600;
   echo 
date("r"$za_godz); // Wyświetli datę 'za godzinę'
?>

Podobnie sprawa wygląda z dodawaniem dni czy tygodni. Gorzej jest w przypadku miesięcy - przecież nie wiadomo z góry ile sekund ma miesiąc. Problem ten można rozwiązać na kilka sposobów. Można rozbić datę na poszczególne części (dzień, miesiąc, rok), dodać jedynkę do miesiąca, sprawdzić, czy przypadkiem nie wyszedł nam miesiąc trzynasty (co się stanie jeśli dodamy miesiąc do grudnia) i w takim przypadku odpowiednio zareagować.

Przykład 12.8. Data "za miesiąc"



<?php
   $day   
date('d'); // dzień
   
$month date('m'); // miesiąc
   
$year  date('Y'); // rok
   // dodanie jedynki do miesiąca
   
$month++;
   
// sprawdzenie czy licznik się nie przekręcił
   
if ($month == 13) {
      
$month 1;
      
$year++;
   }
?>

Jest jednak prostrza metoda tworzenia daty względnej. Można do tego użyć funkcji strtotime(). Jako jej argument można podać względny czas.

Przykład 12.9. Tworzenie względnej daty za pomocą funkcji strtotime


   echo strtotime("now"), "\n";           
   // teraz
   echo strtotime("+1 day"), "\n";        
   // jutro
   echo strtotime("+1 week"), "\n";       
   // za tydzień
   echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n"; 
   // za tydzień, dwa dni, 4 godziny i 2 sekundy
   echo strtotime("next Thursday"), "\n"; 
   // następny czwartek
   echo strtotime("last Monday"), "\n";   
   // poprzedni poniedziałek

Copyright © 2006-2011 egrafik.pl | Kontakt | Reklama | Projekty domów
jocker