(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.
start
Dönemin başlangıç tarihi. Öntanımlı olarak, sonuç kümesine dahil edilir.
interval
Dö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.
end
Dö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.
options
Baş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