0Pricing
PHP Academy · Ders

DateInterval ile Tarih Aritmetiği

DateInterval ve modify() kullanarak zaman aralıkları ekleyin ve çıkarın.

DateInterval ile Tarih Aritmetiği, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.

DateInterval Genel Bakış

DateInterval, gün, ay, saat ve benzeri zaman sürelerini temsil eder. DateTime nesnelerine zaman eklemek veya çıkarmak için PHP'nin OO yaklaşımıdır.

DateInterval Oluşturma

ISO 8601 süre gösterimini kullanarak bir DateInterval oluşturunuz:

<?php
// P = period, T = time separator
$oneYear  = new DateInterval('P1Y');    // 1 year
$sixMonths = new DateInterval('P6M');   // 6 months
$tenDays  = new DateInterval('P10D');   // 10 days
$twoHours = new DateInterval('PT2H');   // 2 hours (T before time)
$complex  = new DateInterval('P1Y2M3DT4H5M6S');

echo $oneYear->y;    // 1
echo $tenDays->d;    // 10

Ekleme ve Çıkarma

Bir DateInterval'ı DateTime'a ekleyiniz veya DateTime'dan çıkarınız:

<?php
$dt = new DateTime('2024-01-01');

$dt->add(new DateInterval('P1Y'));   // +1 year
echo $dt->format('Y-m-d');  // 2025-01-01

$dt->sub(new DateInterval('P3M'));   // -3 months
echo $dt->format('Y-m-d');  // 2024-10-01

İki Tarih Arasındaki Fark

diff(), iki tarih arasındaki farkı temsil eden bir DateInterval döndürür:

<?php
$start = new DateTime('2024-01-01');
$end   = new DateTime('2024-06-15');

$diff = $start->diff($end);

echo $diff->y;  // years
echo $diff->m;  // months
echo $diff->d;  // days
echo $diff->h;  // hours
echo $diff->days; // total days: 166

İnsanların Kolayca Okuyabileceği Farklar

Görüntülemek üzere bir DateInterval'ı biçimlendiriniz:

<?php
$birthdate = new DateTime('1990-05-15');
$today     = new DateTime();
$age       = $birthdate->diff($today);

echo $age->y . ' years, ' . $age->m . ' months, ' . $age->d . ' days';

// Check if date is in the past
if ($diff->invert === 1) {
    echo 'Date was in the past';
}

DateInterval::createFromDateString()

Doğal dildeki bir dizeden DateInterval oluşturunuz:

<?php
$interval = DateInterval::createFromDateString('1 year 2 months 3 days');

$dt = new DateTime('2024-01-01');
$dt->add($interval);
echo $dt->format('Y-m-d');  // 2025-03-04

// Other examples:
DateInterval::createFromDateString('next monday');
DateInterval::createFromDateString('6 weeks');

DatePeriod — Aralıklar Üzerinde Yineleme

DatePeriod, belirli aralıklarla bir tarih aralığı üzerinde yineleme yapmanızı sağlar:

<?php
$start    = new DateTime('2024-01-01');
$interval = new DateInterval('P1M');  // monthly
$end      = new DateTime('2024-06-01');

$period = new DatePeriod($start, $interval, $end);

foreach ($period as $date) {
    echo $date->format('Y-m') . PHP_EOL;
}
// 2024-01, 2024-02, 2024-03, 2024-04, 2024-05

Haftalık Raporlar İçin DatePeriod Kullanımı

Haftalık tarih kontrol noktaları oluşturunuz:

<?php
$start    = new DateTime('2024-01-01');
$interval = new DateInterval('P7D');  // weekly
$end      = new DateTime('2024-02-01');

$weeks = new DatePeriod($start, $interval, $end);
foreach ($weeks as $week) {
    echo 'Week of: ' . $week->format('Y-m-d') . PHP_EOL;
}

Aralıkları Karşılaştırma

İki DateInterval'ın büyüklüğünü toplam gün sayısına dönüştürerek karşılaştırınız:

<?php
$a = new DateTime('2024-01-01');
$b = new DateTime('2024-06-01');
$c = new DateTime('2025-01-01');

$diff1 = $a->diff($b)->days;  // 152
$diff2 = $a->diff($c)->days;  // 366

echo ($diff1 < $diff2) ? 'First interval shorter' : 'First interval longer';
// First interval shorter

İş Günlerini Hesaplama

İki tarih arasındaki iş günü sayısını hesaplayınız:

<?php
function businessDays(DateTime $from, DateTime $to): int {
    $count = 0;
    $cur   = clone $from;
    while ($cur < $to) {
        $dow = (int) $cur->format('N'); // 1=Mon ... 7=Sun
        if ($dow < 6) $count++;
        $cur->modify('+1 day');
    }
    return $count;
}

$from = new DateTime('2024-05-27');
$to   = new DateTime('2024-06-07');
echo businessDays($from, $to) . ' business days';

Son Kullanma Tarihi Kalıbı

DateInterval kullanan yaygın abonelik veya belirteç son kullanma tarihi kalıbı:

<?php
function expiresAt(string $duration = 'P30D'): string {
    $dt = new DateTimeImmutable();
    return $dt->add(new DateInterval($duration))->format('Y-m-d H:i:s');
}

echo expiresAt('P30D');   // 30-day trial expiry
echo expiresAt('P1Y');    // 1-year subscription expiry
echo expiresAt('PT1H');   // 1-hour token expiry

Hızlı Kontrol

$dateA->diff($dateB)->days ne döndürür?

Özet: DateInterval

Önemli noktalar:

  • new DateInterval('P1Y2M3DT4H') — ISO 8601 süresi
  • DateTime'ı değiştirmek için add()/sub()
  • diff(), iki tarih arasındaki DateInterval'ı döndürür
  • DatePeriod, bir tarih aralığı üzerinde yineleme yapar
  • diff() sonucundaki toplam gün sayısı için ->days kullanınız
  • Aralığın negatif olup olmadığını öğrenmek için ->invert değerini kontrol ediniz

Sıkça Sorulan Sorular

“DateInterval ile Tarih Aritmetiği” dersi ücretsiz mi?

Evet — “DateInterval ile Tarih Aritmetiği” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.

“DateInterval ile Tarih Aritmetiği” dersinde ne öğreneceğim?

DateInterval ve modify() kullanarak zaman aralıkları ekleyin ve çıkarın. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

PHP Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“DateInterval ile Tarih Aritmetiği” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Unix Zaman Damgaları ve date()
  2. DateTime Sınıfı
  3. DateInterval ile Tarih Aritmetiği
  4. PHP'de Zaman Dilimleri
← PHP Academy Sayfasına Dön