update page now

DateTimeImmutable::setISODate

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

DateTimeImmutable::setISODateУстанавливает дату в формате ISO

Описание

#[\NoDiscard]
public DateTimeImmutable::setISODate(int $year, int $week, int $dayOfWeek = 1): DateTimeImmutable

Метод клонирует текущий объект даты и времени, устанавливает в копии дату по стандарту ISO 8601 — на основе смещения номера недели относительно года и смещения дня относительно недели, а не конкретных дат, — и возвращает изменённую копию объекта DateTimeImmutable.

Список параметров

year

Год.

week

Неделя.

dayOfWeek

Смещение относительно первого дня недели.

Возвращаемые значения

Метод возвращает новый объект DateTimeImmutable с модифицированными данными.

Примеры

Пример #1 Пример установки даты методом DateTimeImmutable::setISODate()

Объектно-ориентированный стиль

<?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";

Результат выполнения приведённого примера:

2008-01-07
2008-01-13

Процедурный стиль

<?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";

Результат выполнения приведённого примера:

2008-01-07
2008-01-13

Пример #2 Значения, которые выходят за пределы диапазона, добавляются к своим родительским значениям

<?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";

Результат выполнения приведённого примера:

2008-01-13
2008-01-14
2009-01-04

Пример #3 Поиск номера месяца, в который входит неделя

<?php

$date
= new DateTimeImmutable();
$newDate = $date->setISODate(2008, 14);
echo
$newDate->format('n');

Результат выполнения приведённого примера:

3

Смотрите также

Добавить

Примечания пользователей 1 note

up
0
samuele dot catuzzi at gmail dot com
23 hours ago
note that giving a week out of range will produce a date for a different year

example:
<?php
$date = new DateTimeImmutable();

$newDate = $date->setISODate(2026, 53);
echo $newDate->format('Y-m-d') . "\n";
// will print "2026-12-28"  (2026 has 53 weeks)

$newDate = $date->setISODate(2026, 54);
echo $newDate->format('Y-m-d') . "\n";
// will print 2027-01-04 which is the 1st week of 2027
?>
To Top