(PHP 5 >= 5.5.0, PHP 7, PHP 8)
DateTimeImmutable::setISODate — Define a data ISO
Retorna um novo objeto DateTimeImmutable com a data configurada de acordo com o padrão ISO 8601 - usa semanas e deslocamentos de dias no lugar de datas específicas.
year
Ano da data.
week
Semana da data.
dayOfWeek
Posição em relação ao primeiro dia da semana.
Retorna um novo objeto DateTimeImmutable com os dados modificados.
Exemplo #1 Exemplo da função 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 procedural
<?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";
?>
Os exemplos acima produzirão:
2008-01-07 2008-01-13
Exemplo #2 Valores que excedem os limites são adicionados a seus valores pai.
<?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";
?>
O exemplo acima produzirá:
2008-01-13 2008-01-14 2009-01-04
Exemplo #3 Para encontrar o mês no qual uma semana se localiza
<?php
$date = new DateTimeImmutable();
$newDate = $date->setISODate(2008, 14);
echo $newDate->format('n');
?>
Os exemplos acima produzirão:
3