Kolaylıkların dili PHP ile tarih formatlamak gerçekten kolay bir iş ama sadece ingilizce siteler için. İngilizce bir sitede tarih göstermek için tek ihtiyacınız ‘date‘ fonksiyonu. İlk parametre olarak gireceğiniz belirli karakterlerle tarihi istediğiniz gibi gösterebilirsiniz. Mesela ‘January 12, 2009‘ yazdırmak için ‘echo date(”F j, Y”)‘ yazmanız yeterli olacaktır.
Türkçe Tarih & Saat Fonksiyonu
Tarih ve saat gösterimini en basit şekilde halledebilmeniz için aşağıdaki göreceğiniz fonksiyonu kullanabilirsiniz. Fonksiyonun çalışma prensibi çok basit: date fonksiyonunu çağırıp aldığı çıktıdaki ingilizce kelimeleri türkçeye çeviriyor. Fonksiyonun dışında kalan diziler de bu çevrimler için zaten. Doğrudan date fonksiyonu kullanıldığı için aldığı parametreler temelde date ile aynı. Sadece işleri biraz daha kolaylaştırmak için bu parametrelerin yeteneklerini arttırdım. Şöyle ki: tarih formatının belirlendiği ilk parametrede ay, gün, yıl gibi türkçe kelimeler; gösterilecek tarihin belirlendiği ikinci parametrede ise tek bir tane yerine çok daha çeşitli formatlarda tarihler kullabiliyorsunuz. Basitçe örneklersek, date(”d F Y”) fonksiyonunu tarih(”d F Y”) şeklinde yazabileceğiniz gibi tarih(”gun ay yil”) şeklinde de yazabilirsiniz (çıktısı ‘17 Mayıs 2009′ gibi birşey olacaktır).
Tanımlama:
tarih($format, [$zaman]);
$zaman ile belirtilen zamanı ilk parametrede belirtilen formatta biçimlendirir. $zaman parametresi girilmemişse çalışma zamanındaki zaman kullanılır.
Parametreler:
$format
Biçilendirilecek tarihin formatı. String içerisine yazılan format bilgilerinden oluşur (”d-F-Y” gibi). date fonksiyonunda kullanılan seçeneklerin hepsi bu değişken için de geçerlidir. php.net:date fonksiyonu adresinde detaylı seçenekleri görebilirsiniz. Bu sayfada belirtilen seçeneklerin yanı sıra aşağıda belirtilen türkçe değerler de kullanılabilir.
| Biçim | Açıklama | Örnek sonuç |
|---|---|---|
| gun | Ay günlerinin sıfır dolgulu iki haneli gösterimi | 01′den 31′e |
| kisagun | Ay günlerinin sıfır dolgusuz gösterimi | 1′den 31′e |
| hgun | Hafta günlerinin tam metinsel gösterimi | Pazar’dan Cumartesi’ye |
| hgunkisa | Ay günlerinin iki harfli metinsel gösterimi | Pzt’den Paz’a |
| ay | Ayın tam metinsel gösterimi, Ocak ya da Mart gibi | Ocak’tan Aralık’a |
| kisaay | Ayın üç karakterli, metinsel kısa gösterimi | Oca’dan Ara’ya kadar |
| aysayi | Ayın sıfır dolgulu sayısal gösterimi | 01′den 12′ye |
| kisaaysayi | Ayın sıfır dolgusuz sayısal gösterimi | 1′den 12′ye kadar |
| yil | Yılın 4 haneli sayısal, tam gösterimi | 1999 ya da 2003 gibi |
| kisayil | Yılın iki haneli gösterimi | 99 ya da 03 gibi |
| saat | Saatin, 24-saatlik sıfır dolgulu gösterimi | 00′dan 23′e |
| kisasaat | Saatin, 12-saatlik sıfır dolgulu gösterimi | 01′den 12′ye |
| dakika | Sıfır dolgulu dakika gösterimi | 00 ile 59 arasında |
| saniye | Sıfır dolgulu saniye gösterimi | 00 ile 59 arasında |
| Örnek format | Örnek sonuç |
|---|---|
| “ay, yil” | Ocak, 2010 |
| “kisagun ay, hgun” | 7 Ocak, Pazartesi |
| “gun-aysayi-kisayil saat:dakika:saniye” | 07-01-10 12:10:54 |
$zaman:
Biçimlendirilecek zamanı belirtir. Eğer girilmemişse o anki zaman kullanılır. $zaman değeri strtotime fonksiyonun kabul ettiği tüm değerler olabilir. MySQL veritabanından aldığınız değerleri doğrudan kullanabilirsiniz. Aşağıda bu parametrenin alabileceği bazı değerler örneklenmiştir:
“31-12-2009 13:23:10″
“2009-12-31 13:23:10″
“31-12-2009″
“3 gun once”
“-3 gun”
“+5 gun”
“2 yil sonra”
Kullanım Örnekleri
echo tarih("gun/ay/yil saat:dakika:saniye")."; "; // çıktısı: 30/Aralık/2009 01:06:58; echo tarih("gun-ay-yil, hgun saat:dakika", "3 gun once")."; "; // çıktısı: 27-Aralık-2009, Pazar 01:06; echo tarih("kisagun-kisaaysayi-kisayil, hgun saat:dakika", "+2 ay")."; "; // çıktısı: 2-3-10, Salı 01:08; echo tarih("yil.ay.gun saat:dakika:saniye", "2009-12-20 12:10:23")."; "; // çıktısı: 2009.Aralık.20 12:10:23; echo tarih("gun ay yil saat:dakika", "20081118100630"); // çıktısı: 18 Kasım 2008 10:06
Kod
$aylarIng=array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); $aylarKisaIng=array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); $gunlerIng=array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"); $gunlerKisaIng=array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"); $aylar=array("Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"); $aylarKisa=array("Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara"); $gunler=array("Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar"); $gunlerKisa=array("Pt", "Sa", "Ça", "Pe", "Cu", "Ct", "Pa"); /** * tarihi turkceye cevirir. tarih temelde date fonksiyonu ile olusturulur. * $zaman ise strtotime ile timestamp'e cevrilir. $format'in kullanımi * date fonksiyonunda oldugu gibidir. ayni sekilde $zaman'in alacagi degerler * strtotime fonksiyonuna uygun secilebilir. * * @global array $aylarIng, $aylar, $gunlerIng, $gunler, $aylarKisaIng, * $aylarKisa, $gunlerKisaIng, $gunlerKisa * @param str $format * @param str/int $zaman * @return str */ function tarih($format, $zaman=null){ if(!$zaman) $zaman=time(); else{ $zaman=str_ireplace(array("once","ay", "gun", "yil","dakika","saniye","hafta"), array("ago","month","day","year","minute","second","week"), $zaman); $zaman=strtotime($zaman); } $format=str_ireplace( array("kisaaysayi","kisaay","aysayi","kisagun","hgunkisa","hgun","gun","kisayil","yil","kisasaat","saat","dakika","saniye", "ay"), array("n", "M", "m", "j", "D", "l", "d", "y", "Y", "h", "H", "i", "s", "F"), $format); $tarihStr=date($format, $zaman); if(strpos($format, "F")!==false){ global $aylarIng, $aylar; $tarihStr=str_replace($aylarIng, $aylar, $tarihStr); } if(strpos($format, "l")!==false){ global $gunlerIng, $gunler; $tarihStr=str_replace($gunlerIng, $gunler, $tarihStr); } if(strpos($format, "M")!==false){ global $aylarKisaIng, $aylarKisa; $tarihStr=str_replace($aylarKisaIng, $aylarKisa, $tarihStr); } if(strpos($format, "D")!==false){ global $gunlerKisaIng, $gunlerKisa; $tarihStr=str_replace($gunlerKisaIng, $gunlerKisa, $tarihStr); } return $tarihStr; }
Kaynaklar:
‘date’ fonksiyonu
SetLocale ile Türkçe Tarih&Saat
Aslında strftime fonksiyonunu kullanarak da türkçe tarih gösterebiliyorsunuz. Fakat bunun için sunucunun bölgesel ayarlarının türkçe olacak şekilde değiştirilmiş olması gerekiyor. Bu ayar yapılamamış olsa bile eğer sunucunuz buna izin veriyorsa PHP kodunuzun başına bir yerlere
setlocale(LC_TIME, ‘tr_TR’);
satırını ekleyerek bölgesel ayarları türkçeye uygun hale getirebilirsiniz. Test için şu php kodunu suncunuzda çalıştırınız:
setlocale(LC_TIME, 'tr_TR'); echo strftime('%A, %d. %B %Y');
Eğer ‘Salı, 05. Ocak 2010′ gibi bir sonuç alıyorsanız bu yöntemi kullanabilirsiniz.
Kaynaklar:
’strftime’ fonksiyonu
’setlocale’ fonksiyonu

(3 oy, ortalama: 4,67 / 5)
[...] 2009′, ‘07-Ağustos-2008, Cumartesi’ gibi şekillerde yazdırmak istiyorsanız PHP ile Türkçe Tarih Gösterimi-Çevrimi başlıklı yazıya gözatmanız daha doğru olur. /** * verilen tarihler arasında geçen süreyi [...]