Php Tarih ve Zaman Fonksiyonu Kullanımı

Php Tarih ve Zaman Fonksiyonu Kullanımı

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çimAçıklamaGörünüm
dGünlerin sıfır dolgulu gösterimi için kullanılır.01 – 31 arası
DGünlerin 3 harfli kısa gösterimi için kullanılır.Pzt – Paz arası
iGünlerin sıfır dolgusuz gösterimi için kullanılır.1 – 31 arası
NHafta günlerinin sayısal gösterimi için kullanılır.1 – 7 arası
wHafta günlerinin sayısal gösterimi için kullanılır.0(Pazar) – 6(Cumartesi)
WYılın hafta sayısının gösterimi için kullanılır.Yılın 35. haftası
FAyın tam gösterimi için kullanılır.Mart – Nisan (March – April)
mAyın sıfır dolgulu gösterimi için kullanılır.01 – 12 arası
MAyın kısa gösterimi için kullanılır.Mar – Nis (Mar – Apr)
nAyın sıfır dolgusuz gösterimi için kullanılır.1 – 12 arası
YYılın dört haneli gösterimi için kullanılır.2023
yYılın iki haneli gösterimi için kullanılır.23
iSıfır dolgulu dakika gösterimi için kullanılır.00 – 59 arası
sSıfır dolgulu saniye gösterimi için kullanılır.00 – 59 arası
tBelirtilen 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.

Bir Cevap Yazın

%d blogcu bunu beğendi: