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ć).
Przykład 12.4. Generowanie timestampu
<?php $dzien = 10; $miesiac = 4; $rok = 2002; $godzina = 12; $minuta = 32; $sekunda = 0; $ts = mktime($godzina, , $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ęść 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.
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 może zostać określona tak samo jak w przypadku
informacji "doklejonej" do części zegarowej.
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/software/tar/manual/html_manualspistresci/tar_7.html