DateTimeInterface::format

DateTimeImmutable::format

DateTime::format

date_format

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeInterface::format -- DateTimeImmutable::format -- DateTime::format -- date_formatRetorna una fecha formateada según el formato proporcionado

Descripción

Estilo orientado a objetos

public DateTimeInterface::format(string $format): string
public DateTimeImmutable::format(string $format): string
public DateTime::format(string $format): string

Estilo por procedimientos

Retorna una fecha formateada según el formato proporcionado.

Parámetros

object

Solamente para el estilo por procedimientos: Un objeto DateTime devuelto por date_create()

format

El formato de la fecha deseada. Ver las opciones de formato a continuación. Existen también numerosas constantes de fechas que pueden ser utilizadas, lo que hace que DATE_RSS reemplace el formato "D, d M Y H:i:s".

Los siguientes caracteres son reconocidos en el parámetro format
Caracteres para el parámetro format Descripción Ejemplos de valores retornados
Día --- ---
d Día del mes, en dos dígitos (con un cero inicial) 01 a 31
D Día de la semana, en tres letras (y en inglés - por defecto: en inglés, o sino, en el idioma local del servidor) Mon a Sun
j Día del mes sin los ceros iniciales 1 a 31
l ('L' minúscula) Día de la semana, textual, versión larga, en inglés Sunday a Saturday
N Representación numérica ISO 8601 del día de la semana 1 (para Lunes) a 7 (para Domingo)
S Sufijo ordinal de un número para el día del mes, en inglés, en dos letras st, nd, rd o th. Funciona bien con j
w Día de la semana en formato numérico 0 (para domingo) a 6 (para sábado)
z Día del año 0 a 365
Semana --- ---
W Número de semana en el año ISO 8601, las semanas comienzan el lunes Ejemplo: 42 (la 42ª semana del año)
Mes --- ---
F Mes, textual, versión larga; en inglés, como January o December January a December
m Mes en formato numérico, con ceros iniciales 01 a 12
M Mes, en tres letras, en inglés Jan a Dec
n Mes sin los ceros iniciales 1 a 12
t Número de días en el mes 28 a 31
Año --- ---
L ¿Es el año bisiesto? 1 si es bisiesto, 0 si no.
o Año de numeración de semanas ISO 8601. Es el mismo valor que Y, excepto si el número de semana ISO (W) pertenece al año anterior o siguiente, este año será utilizado en su lugar. Ejemplos: 1999 o 2003
X Una representación numérica completa extendida de un año, de al menos 4 dígitos, con un - para los años antes de la era común y un + para los años de la era común. Ejemplos: -0055, +0787, +1999, +10191
x Una representación numérica completa extendida si es necesario, o una representación numérica completa estándar si es posible (como Y). Al menos cuatro dígitos. Los años anteriores a la era común son prefijados por un -. Los años más allá (y incluyendo) del 10000 son prefijados por un +. Ejemplos: -0055, 0787, 1999, +10191
Y Una representación numérica completa de un año, al menos 4 dígitos, con - para los años av. J.-C. Ejemplos: -0055, 0787, 1999, 2003, 10191
y Año en 2 dígitos 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 Swatch 000 a 999
g Hora, en formato 12h, sin los ceros iniciales 1 a 12
G Hora, en formato 24h, sin los ceros iniciales 0 a 23
h Hora, en formato 12h, con los ceros iniciales 01 a 12
H Hora, en formato 24h, con los ceros iniciales 00 a 23
i Minutos con ceros iniciales 00 a 59
s Segundos con ceros iniciales 00 a 59
u Microsegundos. Tenga en cuenta que la función date() generará siempre 000000 ya que toma un parámetro de tipo entero, mientras que el método DateTimeInterface::format() soporta microsegundos si DateTime ha sido creada con microsegundos. Ejemplo: 654321
v Milisegundos. Misma nota que para u. Ejemplo: 654
Zona horaria --- ---
e El identificador de la zona horaria Ejemplos: UTC, GMT, Atlantic/Azores
I (i mayúscula) La hora de verano está activada o no 1 si sí, 0 si no.
O Diferencia de horas con la hora de Greenwich (GMT), sin dos puntos entre las horas y los minutos Ejemplo: +0200
P Diferencia con la hora Greenwich (GMT) con un dos puntos entre las horas y los minutos Ejemplo: +02:00
p Idéntico a P, pero retorna Z en lugar de +00:00 (disponible a partir de PHP 8.0.0) Ejemplos: Z o +02:00
T Abreviación de la zona horaria, si es conocida; sino, desplazamiento desde GMT Ejemplos: EST, MDT, +05
Z Desplazamiento horario en segundos. El desplazamiento de zonas al oeste de la zona UTC es negativo, y al este, es positivo. -43200 a 50400
Fecha y Hora completa --- ---
c Fecha en formato ISO 8601 2004-02-12T15:19:21+00:00
r Formato de fecha » RFC 2822/» RFC 5322 Ejemplo: Thu, 21 Dec 2000 16:01:070200
U Segundos desde la época Unix (1 de Enero de 1970, 0h00 00s GMT) Ver también time()

Los caracteres no reconocidos serán impresos tal cual. "Z" retornará siempre 0 cuando se utiliza con gmdate().

Nota:

Sabiendo que esta función solo acepta enteros en forma de timestamp, el carácter u solo es útil al utilizar la función date_format() con un timestamp de usuario creado con la función date_create().

Valores devueltos

Retorna la fecha formateada, en forma de string, en caso de éxito.

Historial de cambios

Versión Descripción
8.2.0 Los caracteres de formato X o x han sido añadidos.
8.0.0 El carácter de formato p ha sido añadido.

Ejemplos

Ejemplo #1 Ejemplo con DateTime::format()

Estilo orientado a objetos

<?php
$date
= new DateTimeImmutable('2000-01-01');
echo
$date->format('Y-m-d H:i:s');
?>

Estilo por procedimientos

<?php
$date
= date_create('2000-01-01');
echo
date_format($date, 'Y-m-d H:i:s');
?>

El resultado del ejemplo sería:

2000-01-01 00:00:00

Ejemplo #2 Más ejemplos

<?php
// set the default timezone to use.
date_default_timezone_set('UTC');

// now
$date = new DateTimeImmutable();

// Imprime algo como: Wednesday
echo $date->format('l'), "\n";

// Imprime algo como: Wednesday 19th of October 2022 08:40:48 AM
echo $date->format('l jS \o\f F Y h:i:s A'), "\n";

/* use the constants in the format parameter */
// imprime algo como: Wed, 19 Oct 2022 08:40:48 +0000
echo $date->format(DateTimeInterface::RFC2822), "\n";
?>

Es posible evitar el desarrollo de un carácter reconocido en la cadena de formato precediéndolo con un antislash. Si el carácter con antislash es ya una secuencia especial, será necesario también escapar el antislash.

Ejemplo #3 Escape de caracteres durante el formato

<?php
$date
= new DateTimeImmutable();

// imprime algo como: Wednesday the 19th
echo $date->format('l \t\h\e jS');
?>

Para formatear fechas en otros idiomas, IntlDateFormatter::format() puede ser utilizada en lugar de DateTimeInterface::format().

Notas

Este método no utiliza locales. Todos los despliegues serán en inglés.

Ver también

add a note

User Contributed Notes 1 note

up
6
jurchiks101 at gmail dot com
5 months ago
If you want to get the week of year + year of said week, you need to use `format('o-W'), otherwise you can stumble into a non-obvious gotcha (unless you RTFM and memorised it, that is).
Using `Y` instead of `o` can result in incorrect year values in the case of the first or last week of the year (depending on if January 4th falls into said week or not), such as the first week of 2025 between 2024-12-30 and 2025-01-05 - `(new DateTime('2024-12-30'))->format('o-W')` will return the correct value of `2025-01` (as per ISO-8601 definition of week of year), while `format('Y-W')` will return `2024-01`.
Because of this, I would personally recommend avoiding using week of year anywhere unless absolutely necessary, as it is easy to make this mistake and never realise it.
To Top