MC, 17:30 środa, 06.02.2013 r.
Ilustracja do artykułu: PHP - Wykonywanie operacji na datach (funkcje: mktime, strtotime, date)

PHP - Wykonywanie operacji na datach (funkcje: mktime, strtotime, date)

W tym artykule chciałbym przedstawić trzy podstawowe funkcje służące do operacji na datach w PHP, którymi są mktime(), strtotime() oraz date().

Co rozumiemy przez operacje na datach?

Operacje na datach można pojmować w dość szerokim zakresie, np. ustalanie nazw dni dla konkretnych dat, ustalanie dat relatywnych do wskazanych etc., etc. Możliwości jest dwa razy więcej niż pomysłów, a ja w tym artykule chciałbym pokazać schemat operacji jakim się posługuje, w takich przypadkach.

Krok pierwszy: ustalić czas uniksowy

Czas uniksowy (timestamp, POSIX) jest to liczba sekund jaka upłynęła od 1970 roku UTC. Wydawać się może, że zamiana jakiejś daty na czas uniksowy jest pozbawiona sensu, jednak jest to punkt wyjściowy dla dalszych operacji na datach. My de facto nie będziemy się zajmować tą wartością, natomiast dla komputera jest ona znacznie bardziej czytelna i dogodniejsza to przeprowadzania modyfikacji. W PHP do uzyskania czasu linuksowego dla wskazanej daty, służy metoda mktime() o składni:
mktime(<godzina>, <minuta>, <sekunda>, <miesiąc>, <dzień>, <rok>);
np.
mktime(17, 7, 59, 2, 6, 2013);

Krok drugi: przetworzyć czas uniksowy

Teraz, gdy mamy już czas uniksowy powinniśmy skupić się na właściwej operacji, którą chcemy wykonać. Zazwyczaj bardzo pomocna jest metoda strtotime(), która potrafi przetworzyć informację tekstową na czas uniksowy, lub przy pomocy tej informacji zmodyfikować przekazany czas uniksowy. Wszystkie tekstowe formaty jakie obsługuje te funkcja zostały opisane w sekcji manuala dostępnej pod tym adresem: formaty daty. Warto je choć powierzchownie przejrzeć, żeby zobaczyć jak duże możliwości stwarza ta funkcja.

Krok trzeci i ostatni: przełożenie czasu uniksowego na czytelną dla człowieka datę

Na sam koniec oczywiście zostało nam przetworzyć czas uniksowy na datę zrozumiałą dla ludzi. Tutaj z pomocą przychodzi nam funkcja date(), w której możemy zdefiniować oczekiwany przez nad format daty (opis funkcji i obsługiwanych formatów).

Czas na prosty przykład

Przedstawiłem już podejście jakie stosuje podczas przeprowadzania operacji na datach w PHP, czas więc na prosty przykład ilustrujący to co wcześniej powiedziane. Znajdźmy więc datę następnego dnia, względem innej podanej daty. Przykład raczej trywialny, ale jednak dobrze obrazujący schemat.
$czasUnix = mkdate(12, 35, 18, 2, 28, 2012); // rok przestępny?
$kolejnyDzien = strtotime("tomorrow", $czasUnix);
echo date("d.m.Y");

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: