(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_DATE sabiti eklendi.
|
| 7.2.19, 7.3.6, 7.4.0 |
recurrences artık 0'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