date

(PHP 4, PHP 5, PHP 7, PHP 8)

dateDar formato a la fecha/hora local

Descripción

date(string$format, int$timestamp = time()): string

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 formatDescripciónEjemplo de valores devueltos
Día------
dDía del mes, 2 dígitos con ceros iniciales01 a 31
DUna representación textual de un día, tres letrasMon hasta Sun
jDía del mes sin ceros iniciales1 a 31
l ('L' minúscula)Una representación textual completa del día de la semanaSunday hasta Saturday
NRepresentació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)
SSufijo ordinal inglés para el día del mes, 2 caracteresst, nd, rd o th. Funciona bien con j
wRepresentación numérica del día de la semana0 (para domingo) hasta 6 (para sábado)
zEl día del año (comenzando por 0)0 hasta 365
Semana------
WNúmero de la semana del año ISO-8601, las semanas comienzan en lunesEjemplo: 42 (la 42ª semana del año)
Mes------
FUna representación textual completa de un mes, como January o MarchJanuary hasta December
mRepresentación numérica de un mes, con ceros iniciales01 hasta 12
MUna representación textual corta de un mes, tres letrasJan hasta Dec
nRepresentación numérica de un mes, sin ceros iniciales1 hasta 12
tNúmero de días del mes dado28 hasta 31
Año------
LSi es un año bisiesto1 si es bisiesto, 0 si no.
oAño según el número de la semana 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
YUna representación numérica completa de un año, 4 dígitosEjemplos: 1999 o 2003
yUna representación de dos dígitos de un añoEjemplos: 99 o 03
Hora------
aAnte meridiem y Post meridiem en minúsculasam o pm
AAnte meridiem y Post meridiem en mayúsculasAM o PM
BHora Internet000 hasta 999
gFormato de 12 horas de una hora sin ceros iniciales1 hasta 12
GFormato de 24 horas de una hora sin ceros iniciales0 hasta 23
hFormato de 12 horas de una hora con ceros iniciales01 hasta 12
HFormato de 24 horas de una hora con ceros iniciales00 hasta 23
iMinutos con ceros iniciales00 hasta 59
sSegundos con ceros iniciales00 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 si DateTime fue creado con microsegundos. Ejemplo: 654321
v Milisegundos (añadido en PHP 7.0.0). La misma observación se aplica para u. Example: 654
Zona Horaria------
eIdentificador 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 no1 si está en horario de verano, 0 si no.
ODiferencia de la hora de Greenwich (GMT) sin colon entre horas y minutosEjemplo: +0200
PDiferencia con la hora de Greenwich (GMT) con dos puntos entre horas y minutos (añadido en PHP 5.1.3)Ejemplo: +02:00
TAbreviatura de la zona horariaEjemplos: 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------
cFecha ISO 8601 (añadido en PHP 5)2004-02-12T15:19:21+00:00
rFecha con formato » RFC 2822Ejemplo: Thu, 21 Dec 2000 16:01:07 +0200
USegundos 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 temporal de Unix de tipo integer que por defecto es la hora local si no se proporciona ningún valor a timestamp. En otras palabras, es de forma predeterminada 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 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()

Historial de cambios

VersiónDescripción
5.1.1 Hay constantes útiles de los formatos estándar de fecha/hora que pueden utilizarse para especificar el parámetro format.
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 un error E_STRICT y E_NOTICE cuando ocurren errores con zonas horarias.

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(0, 0, 0, 7, 1, 2000));


// 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_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>

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(0, 0, 0, date("m") , date("d")+1, date("Y"));
$mes_anterior = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$año_siguiente = mktime(0, 0, 0, date("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

To Top