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; // 10Ekleme 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-05Haftalı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 expiryHı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ürDatePeriod, bir tarih aralığı üzerinde yineleme yapar- diff() sonucundaki toplam gün sayısı için
->dayskullanınız - Aralığın negatif olup olmadığını öğrenmek için
->invertdeğ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
- Unix Zaman Damgaları ve date()
- DateTime Sınıfı
- DateInterval ile Tarih Aritmetiği
- PHP'de Zaman Dilimleri