Menu
Strona główna
Hacking
Programowanie
Telefonia Komórkowa
Kody do Gier
Linux
Dlaczego?
Programowanie w Delphi
Mapa strony
 Programy
Systemy
Artykuły PDF

Security

Skanery
Sniffery
Security

Windows

Użytkowe
Przegl±darki graficzne
Kodeki
Narzędzia plikowe
Narzędzia dyskowe
Narzędzia systemowe
Sterowniki
Szyfrowanie danych
Zarz±dzanie hasłami
Zarz±dzanie rejestrem
£aty i Patche
Zarz±dzanie pamięci±
Synchronizacja czasu
Nagrywanie płyt
Free Antivirus (Darmowe Antyvirusy)
Sterowniki
Obróbka d¼więku
Edycja wideo

Internetowe

Bezpieczeñstwo
Programy P2P
Komunikatory
Dodatki do przegl±darek
Klienty poczty elektronicznej
Narzędzia Antyspamowe
Przegl±darki grup dyskusyjnych
Przegl±darki Offline
Serwery poczty elektronicznej
Telefonia komórkowa
Wyszukiwarki internetowe
Zdalny dostęp
Cybernianie
Klienty FTP
Narzędzia internetowe
Prywatnośc
Przegl±darki internetowe
Serwery FTP
Serwery WWW
Wspomagacze ści±gania
Zarz±dzanie sieci± lokaln±

Tuning Systemu

Diagnostyka i testowanie
Inne
Rozszerzenia pulpitu
Tapety na pulpit
Tuning Systemu
Ikony
Powłoki
Tuning sprzętu
Wygaszacze ekranu

Programowanie

Kompilatory
Biblioteki i komponenty
Bazy danych
Edytory programistyczne
¦rodowiska programistyczne
Debugery
Tworzenie wersji instalacyjnych

Webmastering

Użytkowe
Kursy

Linux

Użytkowe
Internetowe
Multimedialne

Programy biurowe

Programy dla firm
Pakiety biurowe
Administracja
Edytory tekstu
Grafika prezentacyjna
Kadry i płace
Wspomaganie projektowania
Zarz±dzanie projektami
Bazy danych
Finanse i księgowośc
Handel
Programy ewidencyjne
Zarz±dzanie informacj± osobist± (PIM)
 Download GRY
Pelne Wersje GIER
 Artykuy > Programowanie > Kurs PHP - Przetwarzanie daty Cześć 12

Przetwarzanie daty

PHP posiada wiele funkcji, dzięki którym można przetwarzać zapis daty.

Podstawowym sposobem zapisu daty w systemie Unix i pochodnych jest tzw. timestamp. Jest to ilość sekund jaka upłynęła od 1.1.1970 (moment ten nazywany jest Epoch). Zapis taki daje najwięcej możliwości - łatwo go przetwarzać na inne zapisy, dodawać, odjemować odpowiednie przedziały czasu i zapisywać w bazach danych.

Sprawdzanie poprawności

Jedną z podstawowych spraw przy odbieraniu danych od użytkownika to sprawdzenie ich poprawności. Funkcja checkdate() przyjmuje 3 argumenty - odpowiedno miesiąc, dzień i rok (kolejność może się wydawać nielogiczna, lecz w takiej kolejności Amerykanie zapisuję datę), których poprawność ma być sprawdzony. Funkcja zwraca logiczną wartość TRUE jeśli data jest poprawna.

Funkcja ta sprawdza, czy rok ma wartości pomiędzy 1 a 32767, miesiąc między 1 a 12 a dzień od jeden do liczby zależnej od danego miesiąca. Uwzględniane są lata przestępne. W poniższym przykładzie sprawdzane są dane przekazane metodą GET. Dla wywołania test.php?dzien=12&miesiac=10&rok=1992 skrypt wyświetli "Data jest poprawna" a dla test.php?dzien=2&miesiac=14&rok=1980 - "Data jest niepoprawna".

<?php

if (checkdate$_GET['miesiac'], $_GET['dzien'], $_GET['rok'])) {
    echo 
'Data jest poprawna';
} else {
    echo 
'Data jest niepoprawna';
}

?>

Pobieranie aktualnej daty

Aktualną datę można uzyskać tylko w formacie timestamp. Datę taką zwraca funkcja time(). Dokładniejszy czas można uzyskać dzięki funkcji microtime() - dane zwracane przez tą funkcję zapisane są nieco dziwnie, ponieważ zwracany jest string zawierający oddzielone spacją odpowiednio część mikrosekundową i sekundową, czyli "msec sec". Poniższa funkcja zwraca czas w mikrosekundach.

<?php
function getmicrotime(){ 
   list(
$usec$sec) = explode(" ",microtime()); 
   return ((float)
$usec + (float)$sec); 

?>

Informacja ta może zostać użyta do sprawdzenia czasu wykonania danego skryptu.

<?php

$start 
getmicrotime();

for (
$i 0$i 10000$i++) {
   
$str 'test';
}

$end getmicrotime();

echo 
'<!-- strona wygenerowana w '.($end $start).' sekund -->';

?>

W ten sposób można też sprawdzać wydajność różnych rozwiązań. Skrypty wykonywane są zazwyczaj tak szybko, że mikrosekundy to za duża jednostka. Ograniczenie to można obejść przez wykonywanie konkretnych instrukcji w pętli, 100 czy nawet 1000 razy, podobnie jak w powyższym przykładzie.

Funkcję konwertujące datę do podanego formatu jako parametr przyjmują timestamp daty do przekonwertowania. Parametr ten można jednak pominąć i zamiast określonej daty użyta zostanie aktualna data i czas. Pozwala to na uzyskanie aktualnego czasu w formacie innym niż timestamp.

Konwersja daty do formatu timestamp

Timestamp inny niż aktualny można uzyskać na różne sposoby, które trzeba wykorzystać odpowiednio do zastosowania.

Jeśli dostępna jest 'rozbita' data, czyli w osobnych zmiennych dzień, miesiąc, rok itp., lub można do takiej sytuacji doprowadzić przez odpowiednie użycie funkcji explode() lub substr(), można użyć funkcji mktime(). Funkcja ta jako argumenty przyjmuje odpowiednio godzinę, minutę, sekundę, miesiąc, dzień, rok i opcjonalnie informację o "daylight saving", czyli czasie letnim (wartość 1 oznacza czas letni, 0 w przeciwnym przypadku, lub -1, wartość domyślną, jeśli PHP ma samo zgadywać).

<?php

$dzien   
10;
$miesiac 4;
$rok     2002;
$godzina 12;
$minuta  32;
$sekunda 0;

$ts mktime($godzina$minuta$sekunda$miesiac$dzien$rok);

?>

Jeśli data jest zapisana jako string, lecz w jednym z formatów rozpoznawanych przez PHP, string ten można przekonwertować do timestamp używając funkcji strtotime(). Data składa się z kilku elementów, oddzielonych białymi znakami (spacja, znak tabulacji). Białe znaki można pominąć, jeśli nie powoduje to żadnych wieloznaczności. Elementy daty to część kalendarzowa, część zegarowa, strefa czasowa, część wyłącznie liczbowa. Kolejność tych elementów nie ma znaczenia. Dwa inne elementy, dzień tygodnia i przesunięcie czasowe, zostaną opisane w dalszej części rozdziału.

Część kalendarzowa

Część ta określa konkretny dzień roku. Może być podana na jeden z wielu sposobów.

1970-09-17           # Zapis zgodny z ISO 8601.
70-9-17              # Domyślnie przyjmuje się bieżący wiek
70-09-17             # Wszystkie początkowe zera są ignorowane
9/17/72
24 September 1972
24 Sept 72           # Specjalny skrót słowa September
24 Sep 72            # Wszędzie dopuszczalne są trzyliterowe skróty
Sep 24, 1972
24-sep-72
24sep72

Dopuszczalne są angielskie nazwy miesięcy: `January', `February', `March', `April', `May', `June', `July', `August', `September', `October', `November' `December' oraz ich trzyliterowe skróty.

Część zegarowa

Dopuszczalne formaty:

20:02:0
20:02
8:02pm
20:02-0500           # z podaniem strefy czasowej

Mówiąc ogólnie, podstawowy format to gg:mm:ss, przy czym część sekundową można pominąć. Jeśli na końcu dodany zostanie wskażnik am (rano - inna forma to a.m.) lub pm (po południu - p.m.), to część godzinowa ograniczona jest do zakresu 1-12. W takim zapisie północ to 12am, południe - 12pm; część minutowa może być pominęta.

Opcjonalnie, od razu po czasie może zostać podana strefa czasowa w formacie "zggmm", gdzie "z" to odpowiedni znak + lub -, zależnie od strefy, gg to ilość godzin a mm ilość minut przesunięcia.

Strefa czasowa

Strefa czasowa może zostać określona tak samo jak w przypadku informacji "doklejonej" do części zegarowej.

Część liczbowa

Liczby w postaci rrrrmmdd, jeśli wcześniej nie było części kalendarzowej, traktowane są jako te części. Podobnie liczby w postaci ggmm jest traktowana jako część zegarowa, jeśli nie było takiej wcześniej.

Dokładny opis formatów rozpoznawanych przez funkcję strtotime() można znale¼ć pod adresem http://www.gnu.org/manual/tar-1.12/html_chapter/tar_7.html

komentarz[2] |

Copyright 2006 - 2007 E-comet.info. Wszelkie prawa zastrzeone.

programy,artykuy,gry online,teledyski,filmiki,smieszne reklamy,sterowniki,kodeki,programy,program,download, downloads,security,bramka sms, teledyski,antywirusy,darmowe free program,programy p2p,tapety,programy biurowe,programy dla firm,narzdzia dyskowe,edytory,gry strategiczne,gry przygodowe,gry sportowe, symulatory, gry rpg,gry karciane, gry zrecznosciowe. Zapraszamy.
0.02 |