Merhaba Webkolog takipçileri!
Web uygulamaları geliştirirken, tarih ve saat bilgileriyle çalışmak neredeyse her zaman karşımıza çıkan bir ihtiyaçtır. Bir haberin yayınlanma zamanını göstermekten, kullanıcı kayıt tarihlerini saklamaya, etkinlik programları oluşturmaktan zaman farklarını hesaplamaya kadar birçok senaryoda tarih işlemlerine başvururuz. PHP, bu tür işlemler için bize oldukça güçlü ve esnek yerleşik fonksiyonlar sunar. Bu makalede, özellikle PHP 5.2 ve önceki versiyonlarında yaygın olarak kullanılan temel **tarih fonksiyonlarını** mercek altına alacağım. Gelin, zamanın akışını kodlarımızla nasıl yöneteceğimizi öğrenelim!
1. Zaman Damgası (Unix Timestamp) ve Güncel Zamanı Alma
PHP'de tarih ve saat işlemlerinin temelini **Unix Zaman Damgası** (Unix Timestamp) oluşturur. Bu, 1 Ocak 1970 00:00:00 GMT'den itibaren geçen saniye sayısını temsil eden bir tam sayıdır. Çoğu tarih fonksiyonu bu formatla çalışır.
<?php
// Şimdiki zamanı Unix Zaman Damgası olarak döndürür: time()
// Bu fonksiyon hiçbir parametre almaz ve her zaman geçerli tarih ve saat için Unix zaman damgasını döndürür.
$simdiki_unix_zaman = time();
echo "Şimdiki Unix Zaman Damgası: <b>" . $simdiki_unix_zaman . "</b><br>"; // Örn: 1720927800 (her çalıştığında değişir)
echo "<hr>";
// dünkü tarihi ve zamanı hesaplama
// time() - (saniye * dakika * saat) = 1 gün önceki zaman damgası
$dun_unix_zaman = time() - (60 * 60 * 24);
echo "Dünkü Unix Zaman Damgası: <b>" . $dun_unix_zaman . "</b><br>";
?>
2. Zaman Damgasını Biçimlendirme: date()
Fonksiyonu
Unix zaman damgaları bilgisayarlar için kullanışlı olsa da, insanlar için okunabilir değildir. İşte bu noktada date()
fonksiyonu devreye girer. Bu fonksiyon, bir zaman damgasını belirli bir formata dönüştürmemizi sağlar.
<?php
$simdiki_unix_zaman = time(); // Güncel zaman damgasını alalım
// date(biçim_stringi [, zaman_damgası])
// İkinci parametre opsiyoneldir. Verilmezse time() fonksiyonunun döndürdüğü değeri kullanır.
echo "Güncel Tarih ve Saat Biçimleri:
";
echo "Yıl-Ay-Gün Saat:Dakika:Saniye (tam): <b>" . date("Y-m-d H:i:s") . "</b><br>";
echo "Gün.Ay.Yıl: <b>" . date("d.m.Y") . "</b><br>";
echo "Saat:Dakika (24 saat formatı): <b>" . date("H:i") . "</b><br>";
echo "Saat:Dakika:Saniye (12 saat, AM/PM): <b>" . date("h:i:s a") . "</b><br>";
echo "Haftanın tam adı, Gün Ayın Kısaltması Yıl: <b>" . date("l, d M Y") . "</b><br>";
echo "Yılın Kaçıncı Haftası (W): <b>" . date("W") . "</b><br>"; // PHP 4.1'den itibaren
echo "Yılın Kaçıncı Günü (z): <b>" . date("z") . "</b><br>";
echo "Artık Yıl mı (1: Evet, 0: Hayır) (L): <b>" . date("L") . "</b><br>";
echo "Zaman Dilimi Kısaltması (T): <b>" . date("T") . "</b><br>"; // Örn: EET (Eastern European Time)
echo "<hr>";
// Dünkü tarihi biçimlendirme
$dun_unix_zaman = time() - (60 * 60 * 24);
echo "Dünün Tarihi: <b>" . date("Y-m-d H:i:s", $dun_unix_zaman) . "</b><br>";
?>
date()
Biçim Karakterleri (PHP 5.2 için Önemli Olanlar)
date()
fonksiyonu ile kullanabileceğiniz bazı yaygın biçim karakterleri şunlardır:
- Gün:
d
: Ayın günü, iki basamaklı (01-31)j
: Ayın günü, sıfırsız (1-31)D
: Haftanın günü, üç harfli (Mon, Sun..)l
: Haftanın tam adı (Monday, Sunday..)w
: Haftanın sayısal günü (0=Pazar, 6=Cumartesi)z
: Yılın günü (0-365)
- Hafta:
W
: Yılın ISO-8601 hafta numarası (PHP 4.1'den itibaren)
- Ay:
F
: Ayın tam adı (January, March..)m
: Ay, iki basamaklı (01-12)M
: Ayın üç harfli kısaltması (Jan, Mar..)n
: Ay, sıfırsız (1-12)t
: Verilen aydaki gün sayısı (28-31)
- Yıl:
L
: Artık yıl ise 1, değilse 0o
: ISO-8601 hafta tabanlı yıl (PHP 5.1'den itibaren, 5.2'de kullanılabilir)Y
: Yıl, dört basamaklı (2023)y
: Yıl, iki basamaklı (23)
- Saat:
a
: Öğleden önce/sonra (am veya pm)A
: Öğleden önce/sonra (AM veya PM)g
: Saat, 12 saat formatı, sıfırsız (1-12)G
: Saat, 24 saat formatı, sıfırsız (0-23)h
: Saat, 12 saat formatı, iki basamaklı (01-12)H
: Saat, 24 saat formatı, iki basamaklı (00-23)i
: Dakika, iki basamaklı (00-59)s
: Saniye, iki basamaklı (00-59)u
: Mikrosaniye (PHP 5.2'den itibaren)
- Zaman Dilimi:
e
: Zaman dilimi tanımlayıcısı (PHP 5.1'den itibaren) (örn: Europe/Istanbul)I
: Yaz saati uygulaması var mı (1=evet, 0=hayır)O
: GMT farkı, saat ve dakika cinsinden (+0200)P
: GMT farkı, saat ve dakika cinsinden, iki nokta ile (+02:00) (PHP 5.1'den itibaren)T
: Zaman dilimi kısaltması (EST, EET gibi)Z
: Zaman dilimi farkı, saniye cinsinden (-43200 - 50400)
- Tam Tarih/Saat:
c
: ISO 8601 tarih (PHP 5.0'dan itibaren) (örn: 2004-02-12T15:19:21+00:00)r
: RFC 2822 tarih (PHP 5.1.0'dan itibaren) (örn: Thu, 21 Dec 2000 16:01:07 +0200)U
: Unix Zaman Damgası (time() ile aynı)
3. Belirli Bir Tarihi Zaman Damgasına Çevirme: mktime()
Fonksiyonu
Bazen belirli bir tarihi (gelecek veya geçmiş) Unix zaman damgasına dönüştürmemiz gerekebilir. İşte mktime()
fonksiyonu burada devreye giriyor.
<?php
// mktime([saat [, dakika [, saniye [, ay [, gün [, yıl [, ysu_var]]]]]]])
// Parametreler sağdan sola doğru eksik bırakılabilir. Eksik parametreler için geçerli tarih/saat kullanılır.
// 2025 yılı 15 Temmuz saat 14:30:00 için zaman damgası
$ozel_zaman_damgasi = mktime(14, 30, 0, 7, 15, 2025);
echo "15 Temmuz 2025, 14:30:00 zaman damgası: <b>" . $ozel_zaman_damgasi . "</b><br>";
echo "Biçimlendirilmiş: <b>" . date("Y-m-d H:i:s", $ozel_zaman_damgasi) . "</b><br>";
echo "<hr>";
// Bu ayın ilk günü saat 00:00:00
$bu_ayin_ilk_gunu = mktime(0, 0, 0, date("n"), 1, date("Y"));
echo "Bu ayın ilk günü: <b>" . date("Y-m-d H:i:s", $bu_ayin_ilk_gunu) . "</b><br>";
echo "<hr>";
// Gelecek ayın bu günü
// mktime'daki parametreleri, geçerli tarihten bağımsız olarak manipüle edebiliriz.
// Örneğin, "bu ayın 15. gününden 2 ay sonra" gibi:
$gelecek_ay_bugun = mktime(date("H"), date("i"), date("s"), date("n") + 2, date("j"), date("Y"));
echo "2 ay sonraki bugünün tarihi: <b>" . date("Y-m-d H:i:s", $gelecek_ay_bugun) . "</b><br>";
?>
PHP'nin `date()`, `time()` ve `mktime()` gibi temel tarih fonksiyonları, web uygulamalarınızda zamanla ilgili her türlü işlemi gerçekleştirmeniz için sağlam bir temel oluşturur. İster bir blog gönderisinin tarihini göstermek, ister bir kullanıcının yaşını hesaplamak, isterse belirli bir etkinlik için geri sayım yapmak isteyin, bu fonksiyonlar size yardımcı olacaktır. Zaman dilimi ayarlarınıza dikkat etmeyi ve uygulamalarınızın tutarlı zaman bilgileri verdiğinden emin olmayı unutmayın!
Webkolog'u takipte kalın!
Hepinize bol kodlu ve başarılı projeler dilerim!
0 yorum:
Yorum Gönder