php8.5
Home/ Manual/ datetime / datetimeimmutable/ DateTimeImmutable::setISODate

DateTimeImmutable::setISODate

PHP function Edit on GitHub ✎

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

Sets the ISO date

Description

DateTimeImmutable::setISODate(int $year, int $week, int $dayOfWeek = 1): DateTimeImmutable

Returns a new DateTimeImmutable object with the date set according to the ISO 8601 standard - using weeks and day offsets rather than specific dates.

Parameters

year

Year of the date.

week

Week of the date.

dayOfWeek

Offset from the first day of the week.

Return Values

Modifiedobject

Examples

DateTimeImmutable::setISODate() example

Oop

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

The above example will output:

output
2008-01-07
2008-01-13

Procedural

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

The above example will output:

output
2008-01-07
2008-01-13

Values exceeding ranges are added to their parent values

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

The above example will output:

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

Finding the month a week is in

php
<?php

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

The above example will output:

output
3

See Also

Source: reference/datetime/datetimeimmutable/setisodate.xml · from the official PHP manual (php/doc-en)