(PHP 4, PHP 5, PHP 7, PHP 8)
mktime — Obtener la marca de tiempo Unix de una fecha
$hour
= date("H"),$minute
= date("i"),$second
= date("s"),$month
= date("n"),$day
= date("j"),$year
= date("Y"),$is_dst
= -1Devuelve la marca de tiempo Unix correspondiente a los argumentos dados. Esta marca de tiempo es un entero que contiene el número de segundos entre la Época Unix (1 de Enero del 1970 00:00:00 GMT) y el instante especificado.
Los argumentos pueden omitirse de derecha a izquierda; cualquier argumento que se omita será establecido al valor actual según la fecha y hora locales.
Nota:
Desde PHP 5.1, cuando se hace la llamada sin argumentos, mktime() lanza un aviso de tipo
E_STRICT
: use la función time() en su lugar.
hour
El número de la hora relativa al inicio del día determinado por
month
, day
y year
.
Los valores negativos referencian la hora antes de la media noche del día en cuestión.
Los valores mayores que 23 referencian la hora apropiada en el/los día/s siguiente/s.
minute
El número de los minutos relativos al inicio de hour
.
Los valores negativos referencian el minuto en la hora previa.
Los valores mayores que 59 referencian el minuto apropiado en la/s hora/s siguiente/s.
second
El número de segundos relativos al inicio de minute
.
Los valores negativos referencian el segundo en el minuto previo.
Los valores mayores que 59 referencian el segundo apropiado en el/los minuto/s siguiente/s.
month
El número del mes relativo al final del año previo. Los valores de 1 a 12 referencian los meses del calendario normal del año en cuestión. Los valores menores que 1 (incluyendo valores negativos) referencian los meses del año previo en orden inverso, por lo que 0 es Diciembre, -1 es Noviembre, etc. Los valores mayores que 12 referencian el mes apropiado en el/los año/s siguiente/s.
day
El número del día relativo al final del mes previo. Los valores del 1 al 28, 29, 30 o 31 (dependiendo del mes) referencian los días normales del mes relevante. Los valores menores que 1 (incluyendo valores negativos) referencian los días del mes previo por lo que 0 es el último día del mes previo, -1 es el día anterior a ese, etc. Los valores mayores que el número de días del mes relevante referencian el día apropiado en el/los mes/es siguiente/s.
year
El número del año, puede ser un valor de dos o cuatro dígitos,
con valores entre 0-69 mapeados a 2000-2069 y 70-100 a
1970-2000. En sistemas donde time_t es un entero con signo de 32 bits, como
es lo más normal hoy en día, el rango válido para year
es entre 1901 y 2038. Sin embargo, antes de PHP 5.1.0 este
rango estaba limitado desde 1970 a 2038 en algunos sistemas (p.ej. Windows).
is_dst
Este parámetro se puede establecer a 1 si el instante está durante el horario de verano (DST),
0 si no, o -1 (por omisión) si no se sabe si el instante está durante el horario
de verano. Si no se sabe, PHP lo intentará calcular por sí mismo.
Esto puede causar resultados inesperados (pero no incorrectos).
Algunas veces no son válidos si DST está habilitado en el sistema donde se ejecuta PHP o
is_dst
está establecido a 1. Si DST está habilitado a, p.ej. 2:00,
todas las horas entre las 2:00 y las 3:00 no son válidas y mktime()
devuelve un valor indefinido (normalmente negativo).
Algunos sistemas (p.ej. Solaris 8) habilitan DST a la medianoche por lo que la hora 0:30
del día, cuando DST está habilitado, es evaluada como 23:30 del día anterior.
Nota:
A partir de PHP 5.1.0, este parámetro se volvió obsoleto. Como resultado, se pueden usar en su lugar las nuevas características de manejo de zonas horarias.
Nota:
Este parámetro ha sido eliminado en PHP 7.0.0.
mktime() devuelve la marca de tiempo Unix de los argumentos
dados.
Si los argumentos no son válidos, la función devuelve false
(antes de PHP 5.1
devolvía -1
).
Cada vez que se llame a una función de fecha/hora se generará un E_NOTICE
si la zona horaria no es válida, y/o un mensaje E_STRICT
o E_WARNING
si se emplea la configuración del sistema o la variable global
TZ. Véase también date_default_timezone_set()
Versión | Descripción |
---|---|
7.0.0 |
El parámetro is_dst ha sido eliminado.
|
5.3.0 |
mktime() ahora lanza un aviso de tipo E_DEPRECATED
si se usa el parámetro is_dst .
|
5.1.0 |
El parámetro is_dst se volvió obsoleto.
Hacía que la funcion devolviese false si se pruducía un error, en vez de
-1 .
Arreglada la función para que acepte el año, mes y día pasados como
cero.
|
5.1.0 |
Cuando se hace la llamada sin argumento, mktime() lanza
un aviso E_STRICT . Use la
función time() en su lugar.
|
5.1.0 |
Ahora muestra un error |
Ejemplo #1 Ejemplo básico de mktime()
<?php
// Establecer la zona horaria predeterminada a usar. Disponible desde PHP 5.1
date_default_timezone_set('UTC');
// Imprime: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
// Imprime algo como: 2006-04-05T01:02:03+00:00
echo date('c', mktime(1, 2, 3, 4, 5, 2006));
?>
Ejemplo #2 Ejemplo de mktime()
mktime() es útil para hacer que las fechas sean aritméticas y válidas, ya que calculará automáticamente el valor correcto para las entradas que estén fuera de rango. Por ejemplo, cada una de las líneas siguientes producirá la cadena "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));
?>
Ejemplo #3 El último día del mes
El último día de cualquier mes dado se puede expresar como el día "0" del mes siguiente, no el día -1. Los dos ejemplos siguientes producirán la cadena "El último día en Feb 2000 es: 29".
<?php
$último_día = mktime(0, 0, 0, 3, 0, 2000);
echo strftime("El último día en Feb 2000 es: %d", $último_día);
$último_día = mktime(0, 0, 0, 4, -31, 2000);
echo strftime("El último día en Feb 2000 es: %d", $último_día);
?>
Antes de PHP 5.1.0, las marcas de tiempo negativas no estaban soportadas bajo ninguna versión de Windows conocida, y tampoco en otros sistemas. Por lo tanto el rango de años válidos estaba limitado desde 1970 hasta 2038.