mktime
Opis
int mktime ( int 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.
Notatka: 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".
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).
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".
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).