(PHP 4, PHP 5, PHP 7)
date — Dar formato a la fecha/hora local
$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().
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'.
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 | 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 | Añ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 |
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 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 | --- | --- |
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 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().
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
.
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()
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 un error |
5.1.1 |
Hay constantes útiles
de formatos de fecha/hora estándar que se pueden usar para especificar el
parámetro format .
|
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));
/* 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_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().
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).
La marca de tiempo del inicio de una petición está disponible en $_SERVER['REQUEST_TIME'] desde PHP 5.1.