
PHP’de en sinir olduğum fakat bir çok yolla çözümleri de bulduğum bir durumdan bahsetmek istiyorum. Var olan bir tarih değerinin farklı sıralamalarla nasıl tekrar sunulacağından bahsetmeye çalışacağım. Bu tarz sorun yaşayanlar için çözüm odaklı bir ders olacağını düşünüyorum.
Tarih bilgisinin gösterimi ülkelere göre değişiklik göstermektedir. Örneğin ülkemizde kullanılan tarih formatı (dd/mm/yyyy) iken farklı ülkelerde yada mysql gibi yerlerde (yyyy/mm/dd) formatındadır. Bu durumda elimizde bulunan tarih bilgisi (dd/mm/yyyy) ise bunu çevirip kullanmak gerekecektir. Format değişimi için ReGEx desenlerine başvurarak tarih değerlerinin yerlerinin değişmesini sağlıyoruz.
Tarih formatını değiştirmek için preg_replace() fonksiyonunu kullanıyoruz. Bu fonksiyonun ilk parametresine ReGEx desenini yazıyoruz. İkinci parametreye ise değiştirilecek yerleri belirtiyoruz. Son parametrede bu işlem için hangi bilgilerin kullanılacağını belirten değerdir. Aşağıda yer alan örnekte tam olarak bu işlem yapılmaktadır.
<?php ## Bir tarih üretiyoruz $tarih = date("d.m.Y H:i:s"); /* Tarih değerini düzenliyoruz. Gelecek bilgiler aşağıdaki gibidir. $3 -> YIL $2 -> AY $1 -> Gün */ $tarih_duzenle = preg_replace('#(\d{2}).(\d{2}).(\d{4})\s(.*)#', '$3-$2-$1 $4' , $tarih); ## Tarih çıktılarını ekrana yazdırıyoruz. echo $tarih." <br> ".$tarih_duzenle; ?>
Yukarıda yer alan kodlarda belirlenen (dd/mm/yyyy) formatındaki tarih değerini (yyyy/mm/dd) formatına çevirmiş oluyoruz. Bu işlemi elinizde bulunan farklı formatlardaki tarihler için uygulayabilirsiniz. Tarihler konusunda bu tarz sorunlar yaşamamak için time() gibi saniye bazlı değerler tutmanız daha işlevsel olaraktır. Çünkü saniye cinsinden tutulan değerleri farklı formatlara çevirmek oldukça kolaydır.