PHP Conference Japan 2024

DatePeriod::createFromISO8601String

(PHP 8 >= 8.3.0)

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

描述

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

从 ISO8601 字符串(由 specification 指定)创建一个新的 DatePeriod 对象。

参数

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