CakeFest 2024: The Official CakePHP Conference

DatePeriod::__construct

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

DatePeriod::__constructYeni bir DatePeriod nesnesi oluşturur

Açıklama

public DatePeriod::__construct(
    DateTimeInterface $start,
    DateInterval $interval,
    int $recurrences,
    int $options = 0
)
public DatePeriod::__construct(
    DateTimeInterface $start,
    DateInterval $interval,
    DateTimeInterface $end,
    int $options = 0
)
Uyarı
public DatePeriod::__construct(string $isostr, int $options = 0)

Bu 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.

Bağımsız Değişkenler

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:

  1. sıfır oluşumları (R0/)
  2. +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.

Hatalar/İstisnalar

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 Bilgisi

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.

Örnekler

Ö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

Notlar

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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top