kursy , szkolenia warszawa , e-book , audio book , poradniki , jak zarabiać , pieniądze , biznes , marketing e-commerce , e-biznes , zarabianie w sieci , servicetek group Bogdan Markowicz SG ,3 d e-learning , second life w edukacji , edukacja , 3d
W PHP istnieje bardzo dużo funkcji pozwalających na swobodne operowanie datą i czasem. Podstawowym formatem daty jest timestamp, czyli liczba sekund, która upłynęła od 1 stycznia 1970 roku. Taki zapis daje bardzo dużo możliwości, ponieważ pozwala np. na łatwe porównywanie dwóch dat poprzez ich odjęcie. Łatwo też jest przechowywać taki zapis w bazie danych czy w pliku, a dzięki odpowiednim funkcjom PHP można go bardzo prosto zamienić na format czytelny dla użytkownika.
Najprostszą akcją jest uzyskanie aktualnej daty i czasu w formacie timestamp. Wystarczy użyć funkcji time(). Dla przykładu:
| <? $teraz = time(); ?> |
Czasem zachodzi potrzeba sprawdzenia szybkości jakiegoś rozwiązania, np. fragmentu kodu PHP, i porównania jego wydajności z innym. W takim wypadku oczywiście nie ma sensu używanie funkcji time(), ponieważ zazwyczaj wykonanie całego skryptu PHP trwa niecałą setną sekundy. Z pomocą przychodzi funkcja microtime(). Zwraca ona jednak dane w nieco dziwny sposób ? część milisekundowa jest oddzielona spacją od części sekundowej. Poniżej zamieszczamy funkcję interpretującą dane z microtime() i zamieniającą je na coś bardziej czytelnego dla użytkownika:
| <? function getmicrotime(){ list($usec, $sec) = explode(” “,microtime()); return ((float)$usec + (float)$sec); //zwróć uwagę na rzutowanie settype:) } ?> |
Powyższą funkcję można użyć do sprawdzenia czasu wykonywania skryptu. Dla przykładu:
| <? $start = getmicrotime(); //cały skrypt – jakieś instrukcje $koniec = getmicrotime(); echo “Skrypt wykonał się w ” .round($koniec-$start, 5).” sekund.”; ?> |
Aby sprawdzić, czy data wprowadzona np. w formularzu jest poprawna, należy posłużyć się funkcją checkdate(). Pobiera ona kolejno miesiąc, dzień i rok (kolejność zapisu daty w USA) i zwraca wartość TRUE, jeśli data jest poprawna, lub FALSE w wypadku błędu. Funkcja uwzględnia takie kwestie, że np. w roku przestępnym w lutym może być 29 dni.
| <? if (checkdate($_POST[month], $_POST[day], $_POST[year])) { //data jest poprawna – dalsze instrukcje } else { //data niepoprawna – wprowadz jeszcze raz Header(”Location:podaj_date.php?blad=1″); } ?> |
Jeśli dysponujemy już zapisem daty np. wprowadzonej przez użytkownika w formularzu (dzień, miesiąc, rok, godziny, minuty i sekundy osobno), można ją łatwo zamienić na timestamp. Należy wtedy użyć funkcji mktime() i podać w jej parametrach kolejno: godzinę, minuty, sekundy, miesiąc, dzień i rok. Jako ostatni (niewymagany) parametr można podać 1 (jeśli jest to czas letni), 0 (jeżeli jest to czas zimowy) lub -1 bądź nie podawać niczego (wtedy interpreter PHP będzie sam zgadywał, jaki to czas). Dla przykładu:
| <? $time = mktime(23, 24, 11, 12, 4, 1999); ?> |
Funkcja mktime() nadaje się także do poprawiania błędów w datach i wyliczania ostatnich dni miesiąca. Dla przykładu:
| <? $time = mktime(1, 1, 1, 12, 32, 1998); $time = mktime(1, 1, 1, 13, 1, 1998); $time = mktime(1, 1, 1, 1, 1, 1999); $time = mktime(1, 1, 1, 1, 1, 99); ?> |
Wszystkie powyższe przykłady utworzą datę 1 stycznia 1999, a błędy typu 32 grudnia czy 1 dnia 13. miesiąca roku zostaną automatycznie poprawione. Aby wyliczyć ostatni dzień danego miesiąca, należy podać jako argument dzień 0 (zero), a numer miesiąca o jeden większy. Poniższy przykład wyliczy ostatni dzień dla lutego 2000 roku.
| <? $ostatni = mktime (0,0,0,3,0,2000); ?> |
W poprzednim paragrafie pokazywaliśmy, jak utworzyć datę w formacie timestamp. Jednak normalni ludzie mają niestety taką wadę, że nie potrafią czytać daty w tym formacie. Należy im wówczas zaserwować datę w formacie hh:mm:ss dd-mm-rrrr. Aby uzyskać taki efekt z formatu timestamp, należy użyć funkcji date(). Jako pierwszy argument pobiera ona format, w którym zwrócona ma być data, jako drugi zaś (opcjonalnie) datę w formacie timestamp. Funkcja zwraca datę sformatowaną zgodnie z szablonem w argumencie format. W szablonie podaje się specjalne znaki, które są później zamieniane na odpowiednie elementy daty lub czasu. Na przykład G jest zamieniane na godzinę w formacie 24-godzinnym. Oto lista wszystkich znaków do użycia w szablonie w funkcji date:
Jeśli nie chcemy, aby jakiś znak był zamieniony na swój odpowiednik, trzeba przed nim dać znak \. Jeżeli ten znak razem z \ tworzy jakiś znak specjalny, to trzeba go poprzedzić podwójnym \ (np. \t to znak tabulacji, a to znak nowej linii). Dla przykładu:
| <? echo date(?l \\t\h\e jS?); // wyświetla tekst typu ‘Saturday the 8th’ ?> |
Warto dodać, że choć na razie część znaków nie jest używana przez date(), to powinno się cytować wszystkie znaki, które nie mają być zamienione. Dzieje się tak, ponieważ w nowych wersjach PHP do date() wprowadzane będą coraz to nowe symbole. Dla przykładu:
| <? $today = date(’\i\t \i\s \t\h\e jS \d\a\y.’); // It is the 10th day. ?> |
Poniżej inny przykład użycia date(), zaczerpnięty ze strony php.net:
<?
$today = date(”F j, Y, g:i a”); // March 10, 2001, 5:16 pm
$today = date(”m.d.y”); // 03.10.01
$today = date(”j, n, Y”); // 10, 3, 2001
$today = date(”D M j G:i:s T Y”); // Sat Mar 10 15:16:08 MST 2001
$today = date(”H:m:s \m \i\s\ \m\o
\t\h”); // 17:03:17 m is month
$today = date(”H:i:s”); // 17:16:17
?>