PHP Tarih ve Saat Fonksiyonları – Kullanımı ve Örnekler
PHP programlama dilinde tarih ve saat işlemleri, web uygulamalarında sıklıkla kullanılan özelliklerden biridir. Bir içeriğin yayınlanma tarihini göstermek, kullanıcıların kayıt zamanını belirlemek, iki tarih arasındaki farkı hesaplamak veya belirli bir tarihe kaç gün kaldığını öğrenmek için PHP'nin tarih ve saat fonksiyonlarından yararlanabiliriz.
PHP, tarih ve saat işlemlerini gerçekleştirebilmemiz için date(), time(), strtotime(), mktime() gibi hazır fonksiyonlar ve DateTime sınıfını sunar.
1. PHP'DE TARİH VE SAAT İŞLEMLERİ
PHP'de tarih ve saat işlemleri sunucu tarafında gerçekleştirilir. Bu nedenle PHP kodlarının çalıştığı sunucunun saat dilimi ayarı önemlidir.
Örneğin Türkiye'deki bir uygulamada tarih ve saat bilgilerinin doğru görüntülenmesi için Europe/Istanbul saat dilimi kullanılabilir.
<?php
date_default_timezone_set("Europe/Istanbul");
echo date("d.m.Y H:i:s");
?>
Bu kod çalıştırıldığında sunucunun o anki tarih ve saat bilgisi Türkiye saatine göre görüntülenir.
Örnek Çıktı: 11.11.2026 10:30:45
Burada date_default_timezone_set() fonksiyonu PHP'nin kullanacağı varsayılan saat dilimini belirler.
2. PHP DATE() FONKSİYONU
PHP'de tarih ve saat bilgilerini belirli bir biçimde görüntülemek için date() fonksiyonu kullanılır.
Genel kullanım şekli aşağıdaki gibidir:
<?php
echo date("d.m.Y");
?>
Bu kod, güncel tarihi gün.ay.yıl biçiminde ekrana yazdırır.
Örnek Çıktı: 11.11.2026
DATE() FONKSİYONUNDA KULLANILAN KARAKTERLER
date() fonksiyonunda tarih ve saat bilgilerini biçimlendirmek için çeşitli karakterler kullanılır.
| Karakter |
Açıklama |
Örnek |
| d |
Ayın günü (iki basamaklı) |
05 |
| j |
Ayın günü (başında sıfır olmadan) |
5 |
| m |
Ay numarası (iki basamaklı) |
11 |
| n |
Ay numarası (başında sıfır olmadan) |
11 |
| Y |
Dört basamaklı yıl |
2026 |
| y |
İki basamaklı yıl |
26 |
| H |
24 saat biçiminde saat |
15 |
| h |
12 saat biçiminde saat |
03 |
| i |
Dakika |
45 |
| s |
Saniye |
30 |
| l |
Haftanın gününün İngilizce adı |
Wednesday |
| N |
Haftanın günü (1=Pazartesi, 7=Pazar) |
3 |
| F |
Ayın İngilizce adı |
November |
| t |
İlgili aydaki gün sayısı |
30 |
FARKLI TARİH VE SAAT BİÇİMLERİ
<?php
date_default_timezone_set("Europe/Istanbul");
echo date("d.m.Y") . "<br>";
echo date("Y-m-d") . "<br>";
echo date("H:i") . "<br>";
echo date("H:i:s") . "<br>";
echo date("d/m/Y H:i") . "<br>";
?>
Örnek Çıktı:
11.11.2026
2026-11-11
10:30
10:30:45
11/11/2026 10:30
3. PHP TIME() FONKSİYONU
PHP'de time() fonksiyonu, geçerli Unix zaman damgasını (timestamp) saniye cinsinden döndürür.
Unix zaman damgası, 1 Ocak 1970 saat 00:00:00 UTC başlangıcından itibaren geçen saniye sayısını temsil eder.
<?php
echo time();
?>
Bu fonksiyonun sonucu çalıştırıldığı ana göre değişen bir tam sayıdır.
Unix zaman damgaları, tarihleri karşılaştırmak ve belirli süreler hesaplamak için kullanılabilir.
TIME() İLE TARİH HESAPLAMA
Örneğin mevcut zamandan 2 saat sonrasının tarih ve saatini hesaplayalım.
<?php
date_default_timezone_set("Europe/Istanbul");
$simdi = time();
$ikiSaatSonra = $simdi + (2 * 60 * 60);
echo date("d.m.Y H:i:s", $ikiSaatSonra);
?>
Burada 2 * 60 * 60 işlemiyle iki saatin kaç saniye olduğu hesaplanmış ve mevcut zaman damgasına eklenmiştir.
4. PHP STRTOTIME() FONKSİYONU
strtotime() fonksiyonu, İngilizce tarih ve zaman ifadelerini Unix zaman damgasına dönüştürmek için kullanılır.
Örneğin belirli bir tarihi zaman damgasına dönüştürelim.
<?php
$tarih = strtotime("2026-11-11");
echo $tarih;
?>
Bu kod, belirtilen tarihin Unix zaman damgasını verir.
STRTOTIME() İLE TARİH EKLEME VE ÇIKARMA
strtotime() fonksiyonu, İngilizce zaman ifadeleriyle göreceli tarihler hesaplamamızı da sağlar.
<?php
date_default_timezone_set("Europe/Istanbul");
echo date("d.m.Y", strtotime("+1 day")) . "<br>";
echo date("d.m.Y", strtotime("+1 week")) . "<br>";
echo date("d.m.Y", strtotime("+1 month")) . "<br>";
echo date("d.m.Y", strtotime("-1 year")) . "<br>";
?>
Bu örnekte sırasıyla yarının, bir hafta sonrasının, bir ay sonrasının ve bir yıl öncesinin tarihleri hesaplanmaktadır.
Not: Ay ekleme işlemlerinde ayların gün sayıları farklı olduğu için beklenmedik sonuçlar oluşabilir. Özellikle ay sonu hesaplamalarında DateTime sınıfı ve uygun tarih kuralları tercih edilmelidir.
5. PHP MKTIME() FONKSİYONU
mktime() fonksiyonu, belirttiğimiz saat, dakika, saniye, ay, gün ve yıl değerlerinden Unix zaman damgası oluşturur.
Genel kullanım şekli aşağıdaki gibidir:
<?php
mktime(saat, dakika, saniye, ay, gun, yil);
?>
Örneğin 29 Ekim 2026 tarihini oluşturalım.
<?php
date_default_timezone_set("Europe/Istanbul");
$tarih = mktime(0, 0, 0, 10, 29, 2026);
echo date("d.m.Y", $tarih);
?>
Ekran Çıktısı: 29.10.2026
mktime() fonksiyonu özellikle tarih bileşenlerinin ayrı ayrı bilindiği durumlarda kullanılabilir.
6. PHP DATETIME SINIFI
PHP'de tarih ve saat işlemlerini daha kapsamlı biçimde gerçekleştirmek için DateTime sınıfı kullanılabilir.
DateTime sınıfıyla tarih oluşturabilir, tarihleri biçimlendirebilir, tarihlere süre ekleyebilir ve iki tarih arasındaki farkı hesaplayabiliriz.
DATETIME İLE TARİH OLUŞTURMA
<?php
$tarih = new DateTime(
"2026-11-11",
new DateTimeZone("Europe/Istanbul")
);
echo $tarih->format("d.m.Y");
?>
Ekran Çıktısı: 11.11.2026
DATETIME İLE TARİHE GÜN EKLEME
<?php
$tarih = new DateTime("2026-11-11");
$tarih->modify("+10 days");
echo $tarih->format("d.m.Y");
?>
Ekran Çıktısı: 21.11.2026
DATETIME İLE İKİ TARİH ARASINDAKİ FARKI BULMA
<?php
$baslangic = new DateTime("2026-11-01");
$bitis = new DateTime("2026-11-20");
$fark = $baslangic->diff($bitis);
echo $fark->days . " gün";
?>
Ekran Çıktısı: 19 gün
Burada diff() metodu iki tarih arasındaki farkı hesaplar. days özelliği ise farkın toplam gün sayısını verir.
7. PHP İLE TARİH VE SAAT UYGULAMALARI
Şimdi öğrendiğimiz tarih ve saat fonksiyonlarını kullanarak farklı uygulamalar geliştirelim.
ÖRNEK 1: GÜNCEL TARİH VE SAATİ GÖSTERME
Bu uygulamada PHP ile güncel tarih, saat ve haftanın gününü ekrana yazdıracağız.
<?php
date_default_timezone_set("Europe/Istanbul");
echo "Bugünün Tarihi: " . date("d.m.Y") . "<br>";
echo "Saat: " . date("H:i:s") . "<br>";
echo "Haftanın Günü: " . date("l");
?>
Not: date("l") fonksiyonu gün adını İngilizce döndürür. Türkçe gün adları için IntlDateFormatter veya bir gün adları dizisi kullanılabilir.
ÖRNEK 2: DOĞUM TARİHİNE GÖRE YAŞ HESAPLAMA
Kullanıcının doğum tarihini kullanarak yaşını hesaplayan bir uygulama hazırlayalım.
<?php
date_default_timezone_set("Europe/Istanbul");
$dogumTarihi = new DateTime("2005-05-15");
$bugun = new DateTime("today");
if ($dogumTarihi <= $bugun) {
$yas = $dogumTarihi->diff($bugun)->y;
echo "Yaşınız: " . $yas;
} else {
echo "Doğum tarihi gelecekte olamaz.";
}
?>
Bu uygulamada iki tarih arasındaki fark hesaplanarak tamamlanan yıl sayısı bulunur.
ÖRNEK 3: BELİRLİ BİR TARİHE KAÇ GÜN KALDIĞINI HESAPLAMA
Bu uygulamada belirli bir etkinlik tarihine kaç gün kaldığını hesaplayacağız.
<?php
date_default_timezone_set("Europe/Istanbul");
$bugun = new DateTime("today");
$etkinlik = new DateTime("2027-06-01");
if ($etkinlik > $bugun) {
$fark = $bugun->diff($etkinlik);
echo "Etkinliğe " . $fark->days . " gün kaldı.";
} elseif ($etkinlik == $bugun) {
echo "Etkinlik bugün!";
} else {
echo "Etkinlik tarihi geçti.";
}
?>
Bu örnekte etkinlik tarihi ile bugünün tarihi karşılaştırılmıştır.
ÖRNEK 4: İKİ TARİH ARASINDAKİ GÜN SAYISINI BULMA
Kullanıcının belirlediği başlangıç ve bitiş tarihleri arasındaki gün sayısını hesaplayalım.
<?php
$baslangic = new DateTime("2026-09-01");
$bitis = new DateTime("2026-09-30");
$fark = $baslangic->diff($bitis);
echo "İki tarih arasında " . $fark->days . " gün vardır.";
?>
Ekran Çıktısı: İki tarih arasında 29 gün vardır.
Bu hesaplama iki tarih arasındaki geçen gün sayısını verir. Başlangıç ve bitiş günlerinin ikisini de saymak istiyorsak ayrıca değerlendirme yapmamız gerekir.
ÖRNEK 5: HAFTANIN GÜNÜNE GÖRE MESAJ GÖSTERME
Bu uygulamada PHP ile bugünün hangi gün olduğunu kontrol ederek uygun mesajı ekrana yazdıracağız.
<?php
date_default_timezone_set("Europe/Istanbul");
$gun = date("N");
switch ($gun) {
case 1:
echo "Bugün Pazartesi.";
break;
case 2:
echo "Bugün Salı.";
break;
case 3:
echo "Bugün Çarşamba.";
break;
case 4:
echo "Bugün Perşembe.";
break;
case 5:
echo "Bugün Cuma.";
break;
case 6:
echo "Bugün Cumartesi.";
break;
case 7:
echo "Bugün Pazar.";
break;
}
?>
Burada date("N") ifadesi haftanın gününü 1 ile 7 arasında bir sayı olarak döndürür.
Switch-case yapısı kullanılarak bu sayıya karşılık gelen gün adı ekrana yazdırılır.
8. TARİH VE SAAT İŞLEMLERİNDE DİKKAT EDİLMESİ GEREKENLER
- Uygulamanın kullanacağı saat dilimi doğru belirlenmelidir.
- date() fonksiyonundaki biçimlendirme karakterlerinin büyük ve küçük harflerine dikkat edilmelidir.
- strtotime() fonksiyonunun İngilizce tarih ifadeleriyle çalıştığı unutulmamalıdır.
- İki tarih arasındaki fark hesaplanırken DateTime ve diff() kullanılabilir.
- Ay ve yıl ekleme işlemlerinde takvim farklılıkları dikkate alınmalıdır.
- Kullanıcıdan alınan tarih bilgilerinin geçerliliği kontrol edilmelidir.
- Sunucu saat dilimi ile kullanıcının yerel saat dilimi farklı olabilir.
9. ÖĞRENCİLER İÇİN UYGULAMA SORULARI
Uygulama 1: PHP ile güncel tarihi gün/ay/yıl biçiminde, saati ise saat:dakika:saniye biçiminde ekrana yazdırınız.
Uygulama 2: Belirli bir doğum tarihinden hareketle kişinin yaşını hesaplayan PHP uygulaması hazırlayınız.
Uygulama 3: Belirlenen bir sınav tarihine kaç gün kaldığını hesaplayan PHP uygulaması geliştiriniz.
Uygulama 4: PHP ile bugünün tarihinden 15 gün sonrasını ve 10 gün öncesini hesaplayarak ekrana yazdırınız.
Uygulama 5: Haftanın gününü kontrol ederek hafta içi günlerinde "İyi dersler", hafta sonlarında "İyi tatiller" mesajını gösteren PHP uygulaması hazırlayınız.
10. SONUÇ
Bu dersimizde PHP programlama dilinde tarih ve saat işlemlerini gerçekleştirmek için kullanılan temel fonksiyonları öğrendik.
date() fonksiyonuyla tarih ve saat bilgilerini biçimlendirdik, time() fonksiyonuyla Unix zaman damgasını aldık, strtotime() ve mktime() fonksiyonlarıyla tarih hesaplamaları yaptık.
Ayrıca DateTime sınıfını kullanarak tarihler arasında karşılaştırma ve gün farkı hesaplama işlemlerini gerçekleştirdik.
PHP tarih ve saat fonksiyonları; kullanıcı kayıtları, etkinlik takvimleri, sınav geri sayımları, içerik yayın tarihleri ve daha birçok web uygulamasında kullanılmaktadır.
Örnek uygulamaları kendi bilgisayarınızda çalıştırarak farklı tarihler ve saatler üzerinde denemeler yapabilirsiniz.