PHP Conference Nagoya 2025

DatePeriod sınıfı

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

Giriş

Dönemselliğin gösterimi.

Bir tarih aralığı, belirli bir süre boyunca düzenli aralıklarla yinelenen bir tarih ve zaman kümesi üzerinde yinelemeye izin verir.

Sınıf Sözdizimi

class DatePeriod implements IteratorAggregate {
/* Sabitler */
public const int EXCLUDE_START_DATE;
public const int INCLUDE_END_DATE;
/* Özellikler */
public readonly ?DateTimeInterface $start;
public readonly ?DateTimeInterface $current;
public readonly ?DateTimeInterface $end;
public readonly ?DateInterval $interval;
public readonly int $recurrences;
public readonly bool $include_start_date;
public readonly bool $include_end_date;
/* Yöntemler */
public __construct(
    DateTimeInterface $start,
    DateInterval $interval,
    int $recurrences,
    int $options = 0
)
public __construct(
    DateTimeInterface $start,
    DateInterval $interval,
    DateTimeInterface $end,
    int $options = 0
)
public __construct(string $isostr, int $options = 0)
public static createFromISO8601String(string $specification, int $options = 0): static
}

Öntanımlı Sabitler

DatePeriod::EXCLUDE_START_DATE

DatePeriod::__construct() yönteminde kullanılan başlangıç tarihi dışlanır.

DatePeriod::INCLUDE_END_DATE

DatePeriod::__construct() yönteminde kullanılan bitiş tarihi dışlanmaz.

Özellikler

recurrences

Yineleyici tarafından döndürülen örneklerin asgari miktarı.

Yineleme sayısı DatePeriod örneğinin kurucusunda doğrudan recurrences özniteliği ile aktarılarak oluşturulmuşsa, bu özellik bu değere ek olarak, başlangıç tarihi DatePeriod::EXCLUDE_START_DATE aracılığıyla iptal edilmişse artı bir, bitiş tarihi DatePeriod::INCLUDE_END_DATE aracılığıyla etkin kılınmışsa artı bir içerir.

Yineleme sayısı doğrudan aktarılmamışsa bu özellik dönen örneklerin asgari sayısını içerir. Bu 0 olurdu, buna ek olarak, başlangıç tarihi DatePeriod::EXCLUDE_START_DATE aracılığıyla devre dışı bırakılmamışsa artı bir, bitiş tarihi DatePeriod::INCLUDE_END_DATE aracılığıyla etkinleştirilmişse artı bir olur.

<?php
$start
= new DateTime('2018-12-31 00:00:00');
$end = new DateTime('2021-12-31 00:00:00');
$interval = new DateInterval('P1M');
$recurrences = 5; // yineleme sayısı

// yineleme sayısını kurucu üzerinden doğrudan belirt
$period = new DatePeriod($start, $interval, $recurrences, DatePeriod::EXCLUDE_START_DATE);
echo
$period->recurrences, "\n";

$period = new DatePeriod($start, $interval, $recurrences);
echo
$period->recurrences, "\n";

$period = new DatePeriod($start, $interval, $recurrences, DatePeriod::INCLUDE_END_DATE);
echo
$period->recurrences, "\n";

// yineleme sayısını kurucu üzerinden belirtME
$period = new DatePeriod($start, $interval, $end);
echo
$period->recurrences, "\n";

$period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE);
echo
$period->recurrences, "\n";
?>

Yukarıdaki örneğin çıktısı:


5
6
7
1
0

Ayrıca bkz: DatePeriod::getRecurrences()

include_end_date

Bitiş tarihinin yinelenen tarihler kümesine dahil edilip edilmeyeceği.

include_start_date

Başlangıç tarihinin yinelenen tarihler kümesine dahil edilip edilmeyeceği.

start

Dönemin başlangıç tarihi.

current

Yineleme sırasında, dönem içindeki şimdiki tarihi içerecektir.

end

Dönemin bitiş tarihi.

interval

Bir ISO 8601 tekrarlanan aralık belirtimi.

Sürüm Bilgisi

Sürüm: Açıklama
8.2.0 DatePeriod::INCLUDE_END_DATE sabiti ve include_end_date özeliği eklendi.
8.0.0 DatePeriod artık IteratorAggregate arayüzünü gerçekliyor. Evvelce, Traversable arayüzünü gerçekliyordu.

İçindekiler

add a note

User Contributed Notes 1 note

up
23
mail at pascalhofmann dot de
7 years ago
When looping over a DatePeriod object, the returned objects always implement DateTimeInterface. The exact type returned depends on how the DatePeriod was created. If $start was a DateTimeImmutable, the objects returned will be of type DateTimeImmutable. If a DateTime object was used, the objects returned will be of type DateTime.
To Top