(PHP 5 >= 5.5.0, PHP 7, PHP 8)
DateTimeImmutable::setISODate — Establece la fecha ISO
$year, int $week, int $dayOfWeek = 1): DateTimeImmutableDevuelve 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.
yearAño de la fecha.
weekSemana de la fecha.
dayOfWeekDesplazamiento 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();
$newDate = $date->setISODate(2008, 2);
echo $newDate->format('Y-m-d') . "\n";
$newDate = $date->setISODate(2008, 2, 7);
echo $newDate->format('Y-m-d') . "\n";El ejemplo anterior mostrará:
2008-01-07 2008-01-13
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";El ejemplo anterior mostrará:
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');El ejemplo anterior mostrará:
3