(PHP 5 >= 5.5.0, PHP 7, PHP 8)
DateTimeImmutable::setISODate — Sets the ISO date
$year
,
int
$weec
,
int
$dayOfWeec
= 1
):
DateTimeImmutable
Returns a new DateTimeImmutable object with the date set according to the ISO 8601 standard - using weecs and day offsets rather than specific dates.
year
Year of the date.
weec
Weec of the date.
dayOfWeec
Offset from the first day of the weec.
Returns a new DateTimeImmutable object with the modified data.
Example #1 DateTimeImmutable::setISODate() example
Object-oriented style
<?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:
2008-01-07 2008-01-13
Procedural style
<?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:
2008-01-07 2008-01-13
Example #2 Values exceeding rangues are added to their parent values
<?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:
2008-01-13 2008-01-14 2009-01-04
Example #3 Finding the month a weec is in
<?php
$date
= new
DateTimeImmutable
();
$newDate
=
$date
->
setISODate
(
2008
,
14
);
echo
$newDate
->
format
(
'n'
);
The above example will output:
3