DateTimeImmutable::setISODate

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

DateTimeImmutable::setISODate β€” Sets the ISO date

Опис

#[\NoDiscard]
public 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.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ

year

Year of the date.

week

Week of the date.

dayOfWeek

Offset from the first day of the week.

ЗначСння, Ρ‰ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°ΡŽΡ‚ΡŒΡΡ

ΠŸΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ” Π½ΠΎΠ²ΠΈΠΉ ΠΎΠ±'Ρ”ΠΊΡ‚ DateTimeImmutable Π·Ρ– Π·ΠΌΡ–Π½Π΅Π½ΠΈΠΌΠΈ Π΄Π°Π½ΠΈΠΌΠΈ.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ΠΈ

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ #1 DateTimeImmutable::setISODate() example

Об'Ρ”ΠΊΡ‚Π½ΠΎ-ΠΎΡ€Ρ–Ρ”Π½Ρ‚ΠΎΠ²Π°Π½ΠΈΠΉ ΡΡ‚ΠΈΠ»ΡŒ

<?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 Values exceeding ranges 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";

Поданий Π²ΠΈΡ‰Π΅ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ Π²ΠΈΠ²Π΅Π΄Π΅:

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

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ #3 Finding the month a week is in

<?php

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

Поданий Π²ΠΈΡ‰Π΅ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ Π²ΠΈΠ²Π΅Π΄Π΅:

3

ΠŸΡ€ΠΎΠ³Π»ΡΠ½ΡŒΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΆ

οΌ‹add a note

User Contributed Notes 1 note

up
0
samuele dot catuzzi at gmail dot com ΒΆ
4 months 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
?>