(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DatePeriod::__construct — Yeni bir DatePeriod nesnesi oluşturur
$start,$interval,$recurrences,$options = 0$start,$interval,$end,$options = 0Bu kullanım artık önerilmiyor, yerine DatePeriod::createFromISO8601String() kullanılmalıdır.
Yeni bir DatePeriod nesnesi oluşturur.
   DatePeriod nesneleri, bir başlangıç
   (start) tarihinden, bir aralıktan
   (interval) ve bir bitiş (end)
   tarihinden veya yineleme sayısından (recurrences)
   bir dizi DateTimeImmutable veya
   DateTime nesnesi oluşturmak için yineleyici olarak
   kullanılabilir.
  
   Nesnelerden dönen sınıf başlangıç (start)
   nesnesinin ata sınıfı olan DateTimeImmutable
   veya DateTime sınıfına eşdeğerdir.
  
startDönemin başlangıç tarihi. Öntanımlı olarak, sonuç kümesine dahil edilir.
intervalDönemsel yinelemeler arasındaki boşluk.
recurrences
       Yineleme sayısı. 0'dan büyük olmalıdır.
       Dönen sonuç sayısı, başlangıç tarihi öntanımlı olarak sonuç
       kümesine dahil edildiğinden bundan büyük olmalıdır.
      
endDönemin bitiş tarihi. Öntanımlı olarak, sonuç kümesine dahil edilmez.
isostr» ISO 8601 tekrarlanan aralık belirtiminin bir alt kümesi.
PHP'nin desteklediği ISO 8601 tekrarlanan aralık belirtimi özelliklerinden bazı örnekler:
R0/)
        
       +02:00 gibi, UTC (Z)
         dışında kalan diğer zaman dilimleri.
        
       optionsBaşlangıç ve bitiş tarihleri ile belirli davranışları denetlemek için kullanılan bit alanı.
       Başlangıç tarihini, dönem içindeki yinelenen tarihler kümesinden hariç
       tutmak için DatePeriod::EXCLUDE_START_DATE sabiti
       kullanılır.
      
       Bitiş tarihini, dönem içindeki yinelenen tarihler kümesine dahil etmek
       için DatePeriod::INCLUDE_END_DATE sabiti
       kullanılır.
      
   isostr geçerli bir ISO 8601 dönemi olarak
   çözümlenemediğine DateMalformedPeriodStringException
   istisnası oluşur. PHP 8.3 öncesinde,
   Exception istisnası oluşuyordu.
  
| Sürüm: | Açıklama | 
|---|---|
| 8.3.0 | Exception yerine artık DateMalformedPeriodStringException istisnası oluşuyor. | 
| 8.2.0 | DatePeriod::INCLUDE_END_DATEsabiti eklendi. | 
| 7.2.19, 7.3.6, 7.4.0 | recurrencesartık0'dan
         büyük olmak zorunda. | 
Örnek 1 - DatePeriod örneği
<?php
$start = new DateTime('2012-07-01');
$interval = new DateInterval('P7D');
$end = new DateTime('2012-07-31');
$recurrences = 4;
$iso = 'R4/2012-07-01T00:00:00Z/P7D';
// Hepsi eşdeğer
$period = new DatePeriod($start, $interval, $recurrences);
$period = new DatePeriod($start, $interval, $end);
$period = new DatePeriod($iso);
// DatePeriod nesnesi üzerinde yineleme yaparak
// yinelenen dönemlerin tarihleri basılabilir.
foreach ($period as $date) {
    echo $date->format('Y-m-d')."\n";
}
?>Yukarıdaki örneğin çıktısı:
2012-07-01 2012-07-08 2012-07-15 2012-07-22 2012-07-29
Örnek 2 - DatePeriod::EXCLUDE_START_DATE
      ile DatePeriod örneği
<?php
$start = new DateTime('2012-07-01');
$interval = new DateInterval('P7D');
$end = new DateTime('2012-07-31');
$period = new DatePeriod($start, $interval, $end,
                         DatePeriod::EXCLUDE_START_DATE);
// DatePeriod nesnesi üzerinde yineleme yaparak
// yinelenen dönemlerin tarihleri basılabilir.
// Bu defa, 2012-07-01 basılmayacak.
foreach ($period as $date) {
    echo $date->format('Y-m-d')."\n";
}
?>Yukarıdaki örneğin çıktısı:
2012-07-08 2012-07-15 2012-07-22 2012-07-29
Örnek 3 - Bir yıldaki tüm son Perşembeleri gösteren DatePeriod örneği
<?php
$begin = new DateTime('2021-12-31');
$end = new DateTime('2022-12-31 23:59:59');
$interval = DateInterval::createFromDateString('last thursday of next month');
$period = new DatePeriod($begin, $interval, $end, DatePeriod::EXCLUDE_START_DATE);
foreach ($period as $dt) {
    echo $dt->format('l Y-m-d'), "\n";
}
?>Yukarıdaki örneğin çıktısı:
Thursday 2022-01-27 Thursday 2022-02-24 Thursday 2022-03-31 Thursday 2022-04-28 Thursday 2022-05-26 Thursday 2022-06-30 Thursday 2022-07-28 Thursday 2022-08-25 Thursday 2022-09-29 Thursday 2022-10-27 Thursday 2022-11-24 Thursday 2022-12-29
   ISO 8601 belirtiminin 4.5 "Recurring time interval" bölümünde belirtilen
   sınırsız sayıda tekrarlama desteklenmemektedir. Yani,
   isostr için "R/..." çalışmayacağı
   gibi end için null da çalışmayacaktır
  
