DateTimeImmutable::setISODate

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

DateTimeImmutable::setISODateSets the ISO date

说明

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();

$date->setISODate(2008, 2);
echo
$date->format('Y-m-d') . "\n";

$date->setISODate(2008, 2, 7);
echo
$date->format('Y-m-d') . "\n";
?>

过程化风格

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

参见