Funciones de Fecha/Hora
PHP Manual

mktime

(PHP 4, PHP 5)

mktimeObtener la fecha Unix de una fecha

Descripción

int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )

Devuelve la fecha Unix correspondiente a los argumentos dados. Esta marca de tiempo es un integer que contiene el número de segundos entre la Época Unix (1 de Enero del 1970 00:00:00 GMT) y el momento especificado.

Los argumentos pueden estar expuestos de derecha a izquierda; cualquier argumento que se omita será establecido al valor actual según la fecha y hora locales.

Notas

Note:

Desde PHP 5.1, cuando se hace la llamada sin argumentos, mktime() lanza un aviso E_STRICT: use la función time() en su lugar.

Parámetros

hour

El número de la hora.

minute

El número de los minutos.

second

El número de segundos pasados el minuto.

month

el número del mes.

day

El número del día.

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 bit, 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 momento está durante el horario de verano (DST), 0 si no, o -1 (por defecto) si no se sabe si el momento 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.

Note:

A partir de PHP 5.1.0, este parámetro se volvió obsoloto. Como resultado, se pueden usar las nuevas características de manejo de zonas horarias en su luguar.

Valores devueltos

mktime() devuelve la fecha Unix de los argumentos dados. Si los argumentos no son válidos, la función devuelve FALSE (antes de PHP 5.1 se devolvía -1).

Errores/Excepciones

Cada vez que se llame a la función date/time se generará un E_NOTICE si la zona horaria no es válida, y/o un mensaje E_STRICT o E_WARNING si se usa la configuración del sistema o la variable global TZ. Vea también date_default_timezone_set()

Historial de cambios

Versión Descripción
5.3.0 mktime() ahora lanza un aviso E_DEPRECATED si el parámetro is_dst se usa.
5.1.0 El parámetro is_dst se volvió obsoleto. Hacía que la funcion devolviese FALSE si se prudujo 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 E_STRICT y E_NOTICE cuando ocurren errores con zonas horarias.

Ejemplos

Example #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(000712000));

// Imprime algo como: 2006-04-05T01:02:03+00:00
echo date('c'mktime(123452006));
?>

Example #2 Ejemplo de mktime()

mktime() es útil para hacer que las fechas sean válidas aritméticamente, 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(00012321997));
echo 
date("M-d-Y"mktime(0001311997));
echo 
date("M-d-Y"mktime(000111998));
echo 
date("M-d-Y"mktime(0001198));
?>

Example #3 El último día del mes siguiente

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(000302000);
echo 
strftime("El último día en Feb 2000 es: %d"$último_día);
$último_día mktime(0004, -312000);
echo 
strftime("El último día en Feb 2000 es: %d"$último_día);
?>

Notas

Caution

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.

Ver también


Funciones de Fecha/Hora
PHP Manual