(PHP 4, PHP 5, PHP 7, PHP 8)
mktime — Obtener la marca de tiempo Unix de una fecha
$hour,$minute = null,$second = null,$month = null,$day = null,$year = nullDevuelve 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.
Cualquier parámetro opcional omitido o a null se establecerá al valor actual según
la fecha y hora locales.
Tenga en cuenta que el orden de los argumentos es extraño:
month, day,
year, y no en el orden más natural de
year, month,
day.
Llamar a mktime() sin argumentos no está soportado, y devolverá un ArgumentCountError. Puede usar time() para obtener la marca de tiempo actual.
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.
monthEl 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.
dayEl 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).
mktime() devuelve la marca de tiempo Unix de los argumentos
dados, o false si la marca de tiempo no cabe en un entero PHP.
| Versión | Descripción |
|---|---|
| 8.0.0 |
hour ya no es opcional. Si necesita una
marca de tiempo unix, utilice time().
|
| 8.0.0 |
minute, second, month,
day y year ahora pueden ser nulos.
|
Ejemplo #1 Ejemplo básico de mktime()
<?php
// Establece la zona horaria a utilizar.
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 mktime()
mktime() es útil para hacer cálculos con fechas y validaciones, ya que calculará automáticamente los valores correctos para entradas fuera de rango. Por ejemplo, cada una de las siguientes líneas devuelve 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
$ultimoDia = mktime(0, 0, 0, 3, 0, 2000);
echo 'Last day in Feb 2000 is: ', date('d', $ultimoDia);
$ultimoDia = mktime(0, 0, 0, 4, -31, 2000);
echo 'Last day in Feb 2000 is: ', date('d', $ultimoDia);
?>