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 字串建立新的 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
選項

一個位元欄位,可用於控制起始和結束日期的特定行為。

使用 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