Php tarih ve zaman fonksiyonu hemen hemen tüm uygulamalarımızda ihtiyaç duyabileceğimiz fonksiyonlardır. Her projede zaman unsuru vardır. Php programlamada zaman unsurlarını biçimlendirmek için php tarih ve zaman fonksiyonlarını kullanıyoruz.
date() Php Zaman Fonksiyonu
Kullanımı en kolay zaman damgası oluşturma ve biçimlendirme fonksiyonudur. Date fonksiyonu iki parametre almaktadır. İlk parametremiz zaman damgasının biçimini belirtmek için kullanır. İkinci parametremiz ise zorunlu değildir ve varsayılan olarak time() fonksiyonun değeridir.
Zaman damgasının biçimi belirtmek için oldukça fazla biçim değeri mevcuttur ama en sık kullanılanları ele alacağız.
Biçim | Açıklama | Görünüm |
d | Günlerin sıfır dolgulu gösterimi için kullanılır. | 01 – 31 arası |
D | Günlerin 3 harfli kısa gösterimi için kullanılır. | Pzt – Paz arası |
i | Günlerin sıfır dolgusuz gösterimi için kullanılır. | 1 – 31 arası |
N | Hafta günlerinin sayısal gösterimi için kullanılır. | 1 – 7 arası |
w | Hafta günlerinin sayısal gösterimi için kullanılır. | 0(Pazar) – 6(Cumartesi) |
W | Yılın hafta sayısının gösterimi için kullanılır. | Yılın 35. haftası |
F | Ayın tam gösterimi için kullanılır. | Mart – Nisan (March – April) |
m | Ayın sıfır dolgulu gösterimi için kullanılır. | 01 – 12 arası |
M | Ayın kısa gösterimi için kullanılır. | Mar – Nis (Mar – Apr) |
n | Ayın sıfır dolgusuz gösterimi için kullanılır. | 1 – 12 arası |
Y | Yılın dört haneli gösterimi için kullanılır. | 2023 |
y | Yılın iki haneli gösterimi için kullanılır. | 23 |
i | Sıfır dolgulu dakika gösterimi için kullanılır. | 00 – 59 arası |
s | Sıfır dolgulu saniye gösterimi için kullanılır. | 00 – 59 arası |
t | Belirtilen ayın gün sayısını göstermek için kullanılır. | 28 – 31 arası |
<?php /* date("Y-m-d") şeklinde biçim değerlerinin yerini değiştirebilirsiniz. */ echo "Bugünün Tarihi " . date("d-m-Y H:i:s") . "<br />"; echo "Yılın " . date("z") . ". günü <br/>"; echo "Yılın " . date("W") . ". haftası <br/>"; //Sonuç ingilizce çıkacaktır. echo "Tam ay yazdırımı :" . date("d F Y") . "<br/>"; echo "İçinde bulunduğumuz ay :" . date("F") . " ve " . date("t") . "gündür."; ?>
Yukarıdaki örnekte zaman damgasının biçimlendirilmesi sırasında biçim değerlerinin kullanımına yer verdim. Her hangi bir ayarlama yapmadığımız için ay ve gün değerleri İngilizce olarak dönecektir ama bu değerleri Türkçe yapmak için birden fazla uzun veya kısa denebilecek yollar mevcuttur.
Bu yollara değinmek gerekirse fonksiyon ile yapılabilir. Switch case karar yapısı ile yapılabilir. Else if karar yapısı ile yapılabilir. Diziler ile yapılabilir. Sonuç olarak hangi yolu seçeceğiniz size kalmış. Aşağıdaki örnekte else if karar yapısı ile oluşturmuş olduğum fonksiyonu sunacağım.
Karar yapıları hakkında bilgi almak için Php If ve Switch Karar Yapılarının Kullanımı başlıklı yazıma, diziler hakkında bilgi almak için Php Dizi(Array) Nedir? başlıklı yazıma ve fonksiyon kullanımı hakkında bilgi almak için Php Fonksiyon Kullanımı başlıklı yazıma göz atabilirsiniz.
<?php function trAy($ay) { if ($ay == "01" || $ay == "1") { $ay = "Ocak"; } else if ($ay == "02" || $ay == "2") { $ay = "Şubat"; } else if ($ay == "03" || $ay == "3") { $ay = "Mart"; } else if ($ay == "04" || $ay == "4") { $ay = "Nisan"; } else if ($ay == "05" || $ay == "5") { $ay = "Mayıs"; } else if ($ay == "06" || $ay == "6") { $ay = "Haziran"; } else if ($ay == "07" || $ay == "7") { $ay = "Temmuz"; } else if ($ay == "08" || $ay == "8") { $ay = "Ağustos"; } else if ($ay == "09" || $ay == "9") { $ay = "Eylül"; } else if ($ay == "10") { $ay = "Ekim"; } else if ($ay == "11") { $ay = "Kasım"; } else if ($ay == "12") { $ay = "Aralık"; } return $ay; } echo "Ay yazdırımı :" . date("F") . "<br/>"; // burada sonuç ingilizcedir. echo "Türkçe Ay yazdırımı :" . trAy(date("m")); // Türkçe gösterim sağlayacatır. ?>
Örneği dikkatlice incelediğinizde fonksiyona gönderilen ay parametresinin değeri sayısal(int) olarak alınmaktadır bu nedenle date fonksiyonu ile zaman biçimlendirmesi yaparken date(“F”) yerine date(“m”) kullanmalısınız. Böylece trAy fonksiyonuna ay parametresini sayısal(int) olarak göndermiş olacaksınız. Aynı mantık ile günleri de Türkçe yapabilirsiniz.
time() Unix Php Zaman Fonksiyonu
time zaman fonksiyonu çalıştırıldığında sistem saatini saniye cinsine çeviren Unix fonksiyondur. Unix zaman damgası 1 Ocak 1970‘ten başlamaktadır ve time fonksiyonu çalıştırıldığında günümüz tarihi ile Unix başlangıç tarihi arasında geçen süreyi saniye cinsinden döndürür.
<?php echo time(); // Ben bu komutu çalıştırdığımda 1678136520 bu saniye değerini elde ettim. echo '<br/>'; echo date('d.m.Y H:i:s', 1678136520); ?>
date fonksiyonunun iki parametre aldığından ve boş bırakıldığında varsayılan olarak time fonksiyonunun değerini aldığını söylemiştim. Yukarıdaki örnekte önce time fonksiyonu ile zamanı saniye cinsinden yazdırdık. Daha sonra bu time fonksiyonun bize vermiş olduğu saniyeyi date fonksiyonu aracılığı ile biçimlendirdik.
Tarihleri Unix zaman damgasına çevirmek iki tarih arasındaki farkı hesaplamak açısından bizim için daha kolay bir yol olacaktır ancak bunun için öncelikle bulunduğumuz tarihi Unix zaman damgasına çevirmemiz gerekmektedir. Bulunduğumuz yada belirttiğimiz tarihi Unix zaman damgasına çevirmek için mktime fonksiyonunu kullanıyoruz.
mktime() Php Zaman Fonksiyonu
mktime php zaman fonksiyonu yukarıda da bahsettiğim gibi belirtilen tarihi Unix zaman damgasına çevirmek için kullanılmaktadır. Tarihleri Unix zaman damgasına çevirerek karşılaştırma yapmak daha basittir bu nedenle mktime fonksiyonu bizim için önemli rol oynayacaktır.
Aşağıdaki örnekten mktime kullanılarak iki tarih arasında geçen sürenin nasıl hesaplandığını inceleyebilirsiniz.
<?php $bugun = time(); $gecmis_zaman = mktime(22, 40, 01, 07, 07, 2015); $gecen_sure = $bugun - $gecmis_zaman; echo "Bugün unix damgası :" . $bugun . "<br />"; echo "07/072015 22:40:01 unix damgası :" . $gecmis_zaman . "<br />"; echo "Geçen süre unix damgası :" . $gecen_sure . "<br />"; /* Geçen süre*/ $dakika = $gecen_sure / 60; $saniye_farki = floor($gecen_sure - (floor($dakika) * 60)); $saat = $dakika / 60; $dakika_farki = floor($dakika - (floor($saat) * 60)); $gun = $saat / 24; $saat_farki = floor($saat - (floor($gun) * 24)); $yil = floor($gun / 365); $gun_farki = floor($gun - (floor($yil) * 365)); echo $yil . ' yıl '; echo $gun_farki . ' gün '; echo $saat_farki . ' saat '; echo $dakika_farki . ' dakika '; echo $saniye_farki . ' saniye '; ?>
strtotime() Php Zaman Fonksiyonu
strtotime fonksiyonu herhangi bir İngilizce tarih – saat tanımını Unix zaman damgasına dönüştürür.
<?php echo strtotime("now").'<br/>'; // şimdi echo strtotime("10 September 2000").'<br/>'; // 10 Eylül 2000 echo strtotime("+1 day").'<br/>'; // Bugün tarihine +1 günler echo strtotime("+1 week").'<br/>'; // Bugün tarihine +1 hafta ekler echo strtotime("+1 week 2 days 4 hours 2 seconds").'<br/>'; // Bugün tarihine +1 hafta 2 gün 4 saat 2 saniye ekler echo strtotime("next Thursday").'<br/>'; // Gelecek Perşembe gününü verir echo strtotime("last Monday").'<br/>'; // Geçmiş Pazartesiyi verir ?>
Yukarıdaki örneğimizde strtotime fonksiyonu ile İngilizce tarih – saat metninden Unix zaman damgalarını elde ettik ama elde ettiğimiz bu veriler Unix zaman damgası şeklinde olduğu için bir anlamlı bir ifade olmadı. Unix zaman damgalarını date fonksiyonumuz ile anlaşılabilir hale getirerek kullanabiliriz.
<?php echo date('d/m/Y', strtotime("now")) . '<br/>'; // Şimdi echo date('d/m/Y', strtotime("10 September 2000")) . '<br/>'; // 10 Eylül 2000 echo date('d/m/Y', strtotime("+1 day")) . '<br/>';// Bugün tarihine +1 günler echo date('d/m/Y', strtotime("+1 week")) . '<br/>';// Bugün tarihine +1 hafta ekler echo date('d/m/Y/H/i/s', strtotime("+1 week 2 days 4 hours 2 seconds")) . '<br/>';// Bugün tarihine +1 hafta 2 gün 4 saat 2 saniye ekler echo date('d/m/Y', strtotime("next Thursday")) . '<br/>';// Gelecek Perşembe gününü verir echo date('d/m/Y', strtotime("last Monday")) . '<br/>';// Geçmiş Pazartesiyi verir echo date("d/m/Y", strtotime('monday this week')). '<br/>'; // Bu Pazartesiyi verir echo date("d/m/Y", strtotime('monday last week')). '<br/>'; // Geçen hafta Pazartesiyi verir echo date("d/m/Y", strtotime('first day of this month')). '<br/>';//Bu ayın ilk gününü verir echo date("d/m/Y", strtotime('last day of this month')). '<br/>'; // Bu ayın son gününü verir echo date("d/m/Y", strtotime('first day of last month')). '<br/>'; // Geçen ayın ilk gününü verir echo date("d/m/Y", strtotime('last day of last month')). '<br/>'; // Geçen ayın son gününü verir ?>
Yukarıda sıklıkla kullanabileceğimiz zaman fonksiyonlarını ele aldım daha fazla php zaman fonksiyonu için php resmi sayfasını inceleyebilirsiniz.