(PHP 4, PHP 5)
mktime — Oblicza uniksowy znacznik czasu dla podanej daty
$godzina
, int $minuta
, int $sekunda
, int $miesiąc
, int $dzień
, int $rok
[, int $letni/zimowy
] )Uwaga: Proszę zwrócić uwagę na dziwną kolejność argumentów, zupełnie odmienną od spotykanej w standardowym wywołaniu uniksowym mktime(); która w dodatku nie jest praktyczna przy opuszczaniu argumentów od prawej do lewej (patrz niżej). Częstym błędem w skryptach są pomyłki w kolejności tych argumentów.
Funkcja zwraca uniksowy znacznik czasu odpowiadający podanym argumentom. Znacznik czasu jest liczbą całkowitą długą (long integer) zawierającą liczbę sekund dzielącą uniksową Epokę (1 stycznia 1970) od podanego w argumentach czasu.
Argumenty mogą być opuszczane w kolejności od prawej do lewej. Za każdy pominięty argument będzie wówczas wstawiona aktualna wartość, zgodnie z lokalnym czasem/datą.
Argument letni/zimowy
może być ustawiony na 1, jeśli
to czas zimowy, lub 0 jeśli letni, lub -1 (domyślnie) jeśli niewiadomo,
czy letni czy zimowy. Jeśli niewiadomo, PHP spróbuje ustalić to
samodzielnie. Może to powodować nieoczekiwane (ale na pewno poprawne)
wyniki.
Informacja:
Argument
letni/zimowy
dodano w PHP 3.0.10.
Funkcja mktime() przydaje się przy wykonywaniu arytmetyki dat i walidacji, gdyż automatycznie policzy właściwą wartość dla danych spoza przedziałów. Na przykład, każda poniższa linia wyświetli "Jan-01-1998".
Przykład #1 przykład mktime()
<?php
echo date ("M-d-Y", mktime (0,0,0,12,32,1997));
echo date ("M-d-Y", mktime (0,0,0,13,1,1997));
echo date ("M-d-Y", mktime (0,0,0,1,1,1998));
echo date ("M-d-Y", mktime (0,0,0,1,1,98));
?>
rok
może być liczbą dwu lub czterocyfrową, przy
czym wartości dwucyfrowe z przedziału 0-69 będą mapowane do 2000-2069,
a z przedziału 70-99 do 1970-1999 (w systemach, w których time_t jest
32-bitową liczbą całkowitą ze znakiem, co jest obecnie najpopularniejszym
rozwiązaniem, poprawny zakres argumentu rok
zawiera się pomiędzy 1902 a 2037).
Informacja: Windows
Żadna znana wersja systemu Windows nie obsługuje ujemnych znaczników czasu. Z tego powodu zakres poprawnych dat zawiera się pomiędzy rokiem 1970 a 2038.
Ostatni dzień dowolnego miesiąca może być wyrażony jako zerowy dzień następnego miesiąca, ale nie jako -1 dzień. Obydwa poniższe przykłady wyświetlą "Ostatni dzień lutego 2000 to: 29".
Przykład #2 Ostatni dzień miesiąca
<?php
$ostatni = mktime (0,0,0,3,0,2000);
echo strftime ("Ostatni dzień lutego 2000 to: %d", $ostatni);
$ostatni = mktime (0,0,0,4,-31,2000);
echo strftime ("Ostatni dzień lutego 2000 to: %d", $ostatni);
?>
Data z rokiem, miesiącem i dniem równym zero jest niepoprawna (w przeciwnym razie oznaczałoby to 30.11.1999, co mogłoby powodować dziwne rezultaty).