Forum und email

mktime

(PHP 4, PHP 5)

mktime — Obtener la marca de tiempo Unix de una fecha

Descripción

int mktime ([ int $hora [, int $minuto [, int $segundo [, int $mes [, int $dia [, int $anyo [, int $es_dst ]]]]]]] )

Devuelve la marca de tiempo Unix que corresponde a los argumentos dados. Esta marca de tiempo es un entero largo que contiene el número de segundos entre el Epoch Unix (Enero 1 1970 00:00:00 GMT) y la hora especificada.

Es posible dejar sin definir argumentos en orden de derecha a izquierda; cualquier argumento omitido será definido con el valor actual de acuerdo a la fecha y hora local.

Lista de parámetros

hora

El número de la hora.

minuto

El número del minuto.

segundo

El número de segundos después del minuto.

mes

El número del mes.

dia

El número del día.

anyo

El número del año, puede ser un valor de dos o cuatro dígitos; los valores entre 0-69 se convierten a 2000-2069 y 70-100 a 1970-2000. En sistemas en donde time_t es un entero de 32bits con signo, como ocurre comúnmente hoy en día, el rango válido para anyo es un valor 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).

es_dst

Este parámetro puede definirse a 1 si la hora está dentro del tiempo de ahorro de luz diurna (DST), 0 si no lo es, o -1 (el valor predeterminado) si se desconoce si la hora está dentro del tiempo de ahorro de luz diurna o no. Si se desconoce, PHP intenta averiguarlo por sí solo. Esto puede causar resultados inesperados (pero no incorrectos). Algunas veces son inválidos si DST está habilitado en el sistema en el que está corriendo PHP o el valor de es_dst es 1. Si DST está habilitado en p.ej. 2:00, todas las horas entre las 2:00 y las 3:00 son inválidas y mktime() devuelve un valor indefinido (por lo general negativo). Algunos sistemas (p.ej. Solaris 8) habilita DST a media noche así que la hora 0:30 del día cuando DST está habilitado se evalúa como 23:30 del día anterior.

Note: A partir de PHP 5.1.0, este parámetro se ha hecho obsoleto. Como resultado, las nuevas características de manejo de zona horaria deberían usarse en su lugar.

Valores retornados

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

Errors/Exceptions

Every call to a date/time function will generate a E_NOTICE if the time zone is not valid, and/or a E_STRICT message if using the system settings or the TZ environment variable. See also date_default_timezone_set()

Registro de cambios

Versión Descripción
3.0.10 Se agregó el parámetro es_dst
5.1.0 El parámetro es_dst se ha hecho obsoleto. Se ha hecho que la función devuelva FALSE en caso de error, en lugar de -1. Se corrigió la función para aceptar que el año, mes y día sean pasados todos como cero.
5.1.0

Now issues the E_STRICT and E_NOTICE time zone errors.

Ejemplos

Example#1 Ejemplo de mktime()

mktime() es útil cuando se realiza aritmética y validaciones de fechas, ya que calcula automáticamente el valor correcto para entradas fuera de rango. Por ejemplo, cada una de las siguientes líneas produce 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#2 El último día del mes siguiente

El último día de cualquier mes dado puede ser expresado como el día "0" del siguiente mes, no el día -1. Los dos ejemplos siguientes producirán la cadena "El último dia en Feb 2000 es: 29".

<?php
$ultimodia 
mktime(000302000);
echo 
strftime("El ultimo día en Feb 2000 es: %d"$ultimodia);
$ultimodia mktime(0004, -312000);
echo 
strftime("El ultimo día en Feb 2000 es: %d"$ultimodia);
?>

Notes

Caution

Antes de PHP 5.1.0, las marcas de tiempo negativas no eran soportadas bajo ninguna versión conocida de Windows así como en otros sistemas. Por lo tanto, el rango de años válidos se limitaba a 1970 hasta 2038.

Ver también