Funciones de Fecha/Hora
PHP Manual

date

(PHP 4, PHP 5)

dateDar formato a la fecha/hora local

Descripción

string date ( string $format [, int $timestamp = time() ] )

Devuelve una cadena formateada según el formato dado usando el parámetro de tipo integer timestamp dado o el momento actual si no se da una marca de tiempo. En otras palabras, timestamp es opcional y por defecto es el valor de time().

Parámetros

format

El formato de la fecha de salida tipo string. Vea las opciones de formato más abajo. También hay varias constantes de fecha predefinidas que pueden usarse en su lugar, así por ejemplo DATE_RSS contiene la cadena de formato 'D, d M Y H:i:s'.

Los siguientes caracteres están reconocidos en el parámetro de cadena format
Carácter de format Descripción Ejemplo de valores devueltos
Día --- ---
d Día del mes, 2 dígitos con ceros iniciales 01 a 31
D Una representación textual de un día, tres letras Mon hasta Sun
j Día del mes sin ceros iniciales 1 a 31
l ('L' minúscula) Una representación textual completa del día de la semana Sunday hasta Saturday
N Representación numérica ISO-8601 del día de la semana (añadido en PHP 5.1.0) 1 (para lunes) hasta 7 (para domingo)
S Sufijo ordinal inglés para el día del mes, 2 caracteres st, nd, rd o th. Funciona bien con j
w Representación numérica del día de la semana 0 (para domingo) hasta 6 (para sábado)
z El día del año (comenzando por 0) 0 hasta 365
Semana --- ---
W Número de la semana del año ISO-8601, las semanas comienzan en lunes (añadido en PHP 4.1.0) Ejemplo: 42 (la 42ª semana del año)
Mes --- ---
F Una representación textual completa de un mes, como January o March January hasta December
m Representación numérica de una mes, con ceros iniciales 01 hasta 12
M Una representación textual corta de un mes, tres letras Jan hasta Dec
n Representación numérica de un mes, sin ceros iniciales 1 hasta 12
t Número de días del mes dado 28 hasta 31
Año --- ---
L Si es un año bisiesto 1 si es bisiesto, 0 si no.
o Número de año ISO-8601. Esto tiene el mismo valor que Y, excepto que si el número de la semana ISO (W) pertenece al año anterior o siguiente, se usa ese año en su lugar. (añadido en PHP 5.1.0) Ejemplos: 1999 o 2003
Y Una representación numérica completa de un año, 4 dígitos Ejemplos: 1999 o 2003
y Una representación de dos dígitos de un año Ejemplos: 99 o 03
Hora --- ---
a Ante meridiem y Post meridiem en minúsculas am o pm
A Ante meridiem y Post meridiem en mayúsculas AM o PM
B Hora Internet 000 hasta 999
g Formato de 12 horas de una hora sin ceros iniciales 1 hasta 12
G Formato de 24 horas de una hora sin ceros iniciales 0 hasta 23
h Formato de 12 horas de una hora con ceros iniciales 01 hasta 12
H Formato de 24 horas de una hora con ceros iniciales 00 hasta 23
i Minutos, con ceros iniciales 00 hasta 59
s Segundos, con ceros iniciales 00 hasta 59
u Microsegundos (añadido en PHP 5.2.2). Observe que date() siempre generará 000000 ya que toma un parámetro de tipo integer, mientras que DateTime::format() admite microsegundos. Ejemplo: 654321
Zona Horaria --- ---
e Identificador de zona horaria (añadido en PHP 5.1.0) Ejemplos: UTC, GMT, Atlantic/Azores
I (i mayúscula) Si la fecha está en horario de verano o no 1 si está en horario de verano, 0 si no.
O Diferencia de la hora de Greenwich (GMT) en horas Ejemplo: +0200
P Diferencia con la hora de Greenwich (GMT) con dos puntos entre horas y minutos (añadido en PHP 5.1.3) Ejemplo: +02:00
T Abreviatura de la zona horaria Ejemplos: EST, MDT ...
Z Índice de la zona horaria en segundos. El índice para zonas horarias al oeste de UTC siempre es negativo, y para aquellas al este de UTC es siempre positivo. -43200 hasta 50400
Fecha/Hora Completa --- ---
c Fecha ISO 8601 (añadido en PHP 5) 2004-02-12T15:19:21+00:00
r Fecha con formato » RFC 2822 Ejemplo: Thu, 21 Dec 2000 16:01:07 +0200
U Segundos desde la Época Unix (1 de Enero del 1970 00:00:00 GMT) Vea también time()

Los caracteres no reconocidos en la cadena de formato serán impresos tal cual. El formato Z siempre devolverá 0 cuando se usa gmdate().

Nota:

Ya que esta función sólo acepta marcas de tiempo de tipo integer el carácter de formato u sólo es útil cuando se usa la función date_format() con marcas de tiempo basadas en usuario creadas con date_create().

timestamp

El parámetro opcional timestamp es una marca de tiempo Unix de tipo integer que por defecto es la hora local si no se proporciona ningún valor a timestamp. En otras palabras, es por defecto el valor de la función time().

Valores devueltos

Devuelve una cadena de fecha formateada. Si se usa un valor no numérico para timestamp, se devuelve FALSE y se emite un error de nivel E_WARNING.

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.1.0 El rango válido de una marca de tiempo es típicamente desde Fri, 13 Dec 1901 20:45:54 GMT a Tue, 19 Jan 2038 03:14:07 GMT. (Estas son las fechas que corresponden a los valores mínimo y máximo de un entero con signo de 32 bit). Sin embargo, antes de PHP 5.1.0 este rango estaba limitado desde 01-01-1970 a 19-01-2038 en algunos sistemas (p.ej. Windows).
5.1.0

Ahora muestra E_STRICT y E_NOTICE cuando ocurren errores con zonas horarias.

5.1.1 Hay constantes útiles de formatos de fecha/hora estándar que se pueden usar para especificar el parámetro format.

Ejemplos

Ejemplo #1 Ejemplo de date()

<?php
// Establecer la zona horaria predeterminada a usar. Disponible desde PHP 5.1
date_default_timezone_set('UTC');


// Imprime algo como: Monday
echo date("l");

// Imprime algo como: Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');

// Imprime: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " date("l"mktime(000712000));

/* Usar las constantes en el parámetro de formato */
// Imprime algo como: Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);

// Imprime algo como: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOMmktime(000712000));
?>

Puede prevenir que un carácter reconocido en la cadena de formato sea expandido escapándolo con una barra invertida precedente. Si el carácter con una barra invertida es ya una secuencia especial, necesitará escapar también la barra invertida.

Ejemplo #2 Escapar caracteres en date()

<?php
// imprime algo como: Wednesday the 15th
echo date('l \t\h\e jS');
?>

Es posible usar date() y mktime() juntos para buscar fechas en el futuro o en el pasado.

Ejemplo #3 Ejemplo de date() y mktime()

<?php
$mañana        
mktime(000date("m")  , date("d")+1date("Y"));
$mes_anterior  mktime(000date("m")-1date("d"),   date("Y"));
$año_siguiente mktime(000date("m"),   date("d"),   date("Y")+1);
?>

Nota:

Esto puede ser más fiable que añadir o sustraer simplemente el número de segundos de un día o mes a una marca de tiempo debido al horario de verano.

Algunos ejemplos de formatear date(). Observe que debería escapar cualesquiera otros caracteres, ya que cualquiera que tenga actualmente un significado especial producirá resultados no deseados, y a otros caracteres se les pueden asignar significado en futuras versiones de PHP. Cuando se escapa un carácter, asegúrese de usar comillas simples para prevenir que caracteres como \n se conviertan en nuevas líneas.

Ejemplo #4 date() Formatting

<?php
// Se asume que hoy es March 10th, 2001, 5:16:18 pm, y que estamos en la
// zona horaria Mountain Standard Time (MST)

$hoy date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$hoy date("m.d.y");                         // 03.10.01
$hoy date("j, n, Y");                       // 10, 3, 2001
$hoy date("Ymd");                           // 20010310
$hoy date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$hoy date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
$hoy date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
$hoy date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
$hoy date("H:i:s");                         // 17:16:18
$hoy date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (el formato DATETIME de MySQL)
?>

Para formatear fechas en otros lenguajes debería usar las funciones setlocale() y strftime() en vez de date().

Notas

Nota:

Para generar una marca de tiempo desde una cadena que representa la fecha, puede usar strtotime(). Adicionalmente, algunas bases de datos tienen funciones para convertir formatos de fecha en marcas de tiempo (como la función » UNIX_TIMESTAMP de MySQL).

Sugerencia

La marca de tiempo del inicio de una petición está disponible en $_SERVER['REQUEST_TIME'] desde PHP 5.1.

Ver también


Funciones de Fecha/Hora
PHP Manual