Forum und email

mktime

(PHP 4, PHP 5)

mktime — Egy időpont Unix időbélyegét állítja elő

Leírás

int mktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )

Figyelem! Vedd észre, hogy az argumentumok sorrendje nem éppen szokásos, mert különbözik a hagyományos Unix-os mktime()-étól, ezért nem igazán alkalmas arra, hogy lehagyd az utolsó néhány paramétert. Gyakori hiba scriptekben az argumentumok felcserélése.

Az argumentumok által megadott időpont UNIX időbélyegét adja. Ez tulajdonképpen egy nagy egész szám, a Unix Epoch (1970 Január 1. 00:00:00 GMT) és az adott idő közt eltelt másodpercek száma.

Jobbról elhagyhatsz argumentumokat; ezeket a php az aktuális helyi dátum és idő alapján pótolja.

Az is_dst paramétert állíthatod 1-re, jelezve, hogy a nyári időszámításban (DST) vagy, 0-ra, hogy nem, vagy -1-re (ez az alapértelmezett), ha nem tudod.

Egyes időpontok érvényelenek abban az esetben, ha a PHP-t futtató rendszeren a DST be van állítva vagy az is_dst értéke 1. Ha a DST 2:00-kor kerül beállításra, minden 2:00 és 3:00 közti idő érvénytelen, ezért az mktime() függvény határozatlan (általában negatív) értéket ad vissza. Egyes operációs rendszerek (például Solaris 8) a DST-t éjfélkor kapcsolják be, ezért a 0:30 időpont az előző napi 23:30-nak számít, ha a DST be van kapcsolva.

Note: Az is_dst paraméter a 3.0.10.-es verzióban került a nyelvbe.

A mktime() függvény hasznos a dátumokkal való manipulálás, illetve dátumellenőrzés során, mivel automatikusan "korrekt" dátummá konvertálja a helytelenül megadott bemenetet.Példaul, az alábbi sorok mindegyike azt írja ki, hogy "Jan-01-1998".

Example#1 mktime() példa

<?php
echo date("M-d-Y"mktime(00012321997));
echo 
date("M-d-Y"mktime(0001311997));
echo 
date("M-d-Y"mktime(000111998));
echo 
date("M-d-Y"mktime(0001198));
?>
A year 2 vagy 4 jegyű szám is lehet, ha értéke 0-69 között van, akkor a gép 2000-2069 közé teszi, ha 70-99 között van, 1970-1999-be rakja. (Azon rendszereken, ahol a time_t 32 bites egész, ami manapság a legelterjedtebb, a year paraméter helyes értéke kb. 1901 és 2038 között van).

Note: Windows Negtív időbélyegeket semmilyen ismert Windows rendszeren nem támogat. Emiatt az érvényes évek skálája 1970-től 2038-ig tart.

Adott hónap utolsó napját a következő hónap "0." napjával fejezhetjük ki (NEM a -1.-kel!!!). Az alábbi két példa mind azt írja ki, hogy "2000 februárjának utolsó napja: 29".

Example#2 Last day of next month

<?php
$lastday 
mktime(000302000);
echo 
strftime("2000 februárjának utolsó napja: %d"$lastday);
$lastday mktime(0004, -312000);
echo 
strftime("2000 februárjának utolsó napja: %d"$lastday);
?>

Az olyan dátum, amelyben az év, hónap, és a nap is nulla, nem legális (máskülönben 1999. 11. 30.-ának kellene tekinteni, ami furcsa viselkedés lenne)

Lásd még a gmmktime(), date() és a time() függvényeket.