(PHP 5 >= 5.5.0, PHP 7, PHP 8)
DateTimeImmutable::setISODate — Establece la fecha ISO
Devuelve un nuevo objeto DateTimeImmutable con la fecha establecida de acuerdo al estándar ISO 8601 - usando semanas y desplazamientos de días en lugar de fechas específicas.
year
Año de la fecha.
week
Semana de la fecha.
dayOfWeek
Desplazamiento desde el primer día de la semana.
Retorna un nuevo objeto DateTimeImmutable con los datos modificados.
Ejemplo #1 Ejemplo de DateTimeImmutable::setISODate()
Estilo orientado a objetos
<?php
$date = new DateTimeImmutable();
$date->setISODate(2008, 2);
echo $date->format('Y-m-d') . "\n";
$date->setISODate(2008, 2, 7);
echo $date->format('Y-m-d') . "\n";
?>
Estilo procedimental
<?php
$date = date_create();
date_isodate_set($date, 2008, 2);
echo date_format($date, 'Y-m-d') . "\n";
date_isodate_set($date, 2008, 2, 7);
echo date_format($date, 'Y-m-d') . "\n";
?>
Los ejemplos anteriores mostrarán :
2008-01-07 2008-01-13
Ejemplo #2 Valores que exceden los rangos se añaden a sus valores padres
<?php
$date = new DateTimeImmutable();
$newDate = $date->setISODate(2008, 2, 7);
echo $newDate->format('Y-m-d') . "\n";
$newDate = $date->setISODate(2008, 2, 8);
echo $newDate->format('Y-m-d') . "\n";
$newDate = $date->setISODate(2008, 53, 7);
echo $newDate->format('Y-m-d') . "\n";
?>
El ejemplo anterior mostrará :
2008-01-13 2008-01-14 2009-01-04
Ejemplo #3 Buscando el mes en el que se encuentra una semana
<?php
$date = new DateTimeImmutable();
$newDate = $date->setISODate(2008, 14);
echo $newDate->format('n');
?>
Los ejemplos anteriores mostrarán :
3