(PHP 4, PHP 5)
mktime — Взима Unix времеви отпечатък за дата
Връща Unix времеви отпечатък (timestamp), който отговаря на подадените аргументи. Този timestamp е голямо цяло число (long integer), съдържащ броя секунди между Unix Епохата (1 януари 1970 00:00:00 GMT) и указаното време.
Аргументите могат да бъдат пропускани от дясно на ляво; така на всеки пропуснат аргумент ще бъде присвоена текущата стойност, съгласно локалното време и дата.
Стойността за часа.
Стойността за минутата.
Стойността за секундите.
Стойността за месеца.
Стойността за деня.
Стойността за годината може да бъде число с две или четири цифри, като стойностите между 0 и 69 се приемат за години между 2000 и 2069, а стойности между 70 и 100 за години между 1970 и 2000. На системи при които time_t е 32 битово цяло число със знак, каквито са повечето съвременни системи, валидните стойности за year са между 1901 и 2038, въпреки че, това ограничение е преодоляно от PHP 5.1.0.
Този параметър може да бъде установен в 1, ако времето е през лятното часово време (DST), 0 ако не е или -1 (по подразбиране) ако не е известно дали времето е през лятното часово време или не. Ако не е известно, PHP ще направи опит да го открие. Това може да предизвика неочаквани (но не и неправилни) резултати. Някои времена се считат за невалидни ако лятното часово време е включено на системата на която е стартирано PHP или ако параметъра is_dst е установен в 1. Ако лятното часово време е включено, като например в 2:00, всички времена между 2:00 и 3:00 ще са невалидни и функция mktime() ще върне недефинирана (обикновено отрицателна) стойност. Някои системи (като Solaris 8) включват лятното часово време в полунощ, така че часът 0:30 от денят при включено лятно часово време ще се изчислява като 23:30 от предишния ден.
Забележка: От PHP 5.1.0, този параметър е непрепоръчителен. В резултат на това, вместо него трябва да се използват новите възможности за манипулиране на часовите зони.
mktime() връща Unix timestamp на подадените аргументи. Ако аргументите са невалидни, функцията ще върне FALSE (до PHP 5.1 връщаше -1).
Всяко извикване на функция за дата и час ще генерира E_NOTICE , ако часовият пояс не е валиден, и/или E_STRICT съобщение ако се използват настройките на системата или променливата на обкръжението TZ. Вж. също date_default_timezone_set()
Версия | Описание |
---|---|
3.0.10 | Беше добавен параметърът is_dst |
5.1.0 | Параметърът is_dst стана непрепоръчителен. Функцията връща FALSE при грешка, вместо -1. Функцията приема година, месец и ден предадени като нули. |
5.1.0 | Вече генерира E_STRICT и E_NOTICE грешки за часовият пояс. |
Example #1 Пример за mktime()
mktime() е добра за аритметика и валидиране на дати, защото автоматично изчислява коректната стойност за входящи данни, които са извън обхвата. Например, всеки от следните редове връща низа: "Jan-01-1998".
<?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));
?>
Example #2 Последния ден на следващия месец
Последният ден на всеки месец, може да бъде изразен като ден "0" от следващия месец, а не като ден -1. И двата примера по-долу ще изведат низа "The last day in Feb 2000 is: 29".
<?php
$lastday = mktime(0, 0, 0, 3, 0, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
?>
До PHP 5.1.0, отрицателни timestamp стойности не се поддържаха под никоя версия на Windows и някои други системи. По тази причиня обхвата на валидните стойности за представяне на година бяха ограничено от 1970 до 2038.