DatePeriod::createFromISO8601String

(PHP 8 >= 8.3.0)

DatePeriod::createFromISO8601String从 ISO8601 字符串创建新的 DatePeriod 对象

描述

public static DatePeriod::createFromISO8601String(string $specification, int $options = 0): static

从 ISO8601 字符串创建新的 DatePeriod 对象,如 specification 所指定。

参数

specification

» ISO 8601 重复间隔规范 的子集。

一个可接受的 ISO 8601 间隔规范示例是 R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M,它指定

  • 5 次迭代 (R5/)
  • 2008-03-01T13:00:00Z 开始。
  • 每次迭代都是 1 年、2 个月、10 天、2 小时和 30 分钟的间隔 (/P1Y2M10DT2H30M)。

PHP 不支持的一些 ISO 8601 间隔规范特性的示例包括

  1. 零次出现 (R0/)
  2. 除 UTC (Z) 之外的时区偏移量,例如 +02:00
options

一个位域,可用于控制开始日期和结束日期的某些行为。

使用 DatePeriod::EXCLUDE_START_DATE,您将开始日期从周期内重复出现的日期集中排除。

使用 DatePeriod::INCLUDE_END_DATE,您将结束日期包含在周期内重复出现的日期集中。

返回值

创建新的 DatePeriod 对象。

使用此方法创建的 DatePeriod 对象可用作迭代器,以生成多个 DateTimeImmutable 对象。

错误/异常

specification 无法解析为有效的 ISO 8601 周期时,将抛出 DateMalformedPeriodStringException

示例

示例 #1 DatePeriod::createFromISO8601String 示例

<?php
$iso
= 'R4/2023-07-01T00:00:00Z/P7D';

$period = DatePeriod::createFromISO8601String($iso);

// 通过迭代 DatePeriod 对象,将打印该周期内的所有
// 重复日期。
foreach ($period as $date) {
echo
$date->format('Y-m-d'), "\n";
}
?>

上面的示例将输出

2023-07-01
2023-07-08
2023-07-15
2023-07-22
2023-07-29

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top