PHp'de Tarih İşlemleri

WebMaster bölümünde yer alan bu konu SüKuN tarafından paylaşıldı.

  1. SüKuN

    SüKuN Harbi Aktif Üye

    PHp'de Tarih İşlemleri

    date(); Fonksiyonu
    checkdate(); Fonksiyonu
    mktime(); Fonksiyonu
    getdate(); Fonksiyonu
    time(); Fonksiyonu
    gettimeofday(); Fonksiyonu
    Bu makalede PHP dilinde tarih ve zaman ile ilgili genel kavramları ele alacağız. Sırasıyla yukarıda yazan tüm fonksiyonları işleyeceğiz.

    date(); Fonksiyonu

    Bu fonksiyonla PHP`den saat ve tarih bilgilerini alırız. İçerisine oldukça fazla parametre alabilmektedir. Tüm parametreleri ve açıklamalarını aşağıda görebilirsiniz.
    a [Küçük A]: am veya pm şeklinde çıktı verir.
    A [Büyük a]: AM veya PM şeklinde çıktı verir.
    d [Küçük D]: Ayın içinde hangi günde olduğunuzu başta sıfır olmak üzere 01 gibi bir formatta verir.
    D [Büyük d]: Üç harfli gün adını verir.
    F [Büyük f]: Ayın tam adını ingilizce olarak verir. June gibi bir çıktı verecektir.
    g [Küçük G]: Başta sıfır olmamak üzere 12 saat formatında saati verir. 1-12 arasında çıktı verir.
    G [Büyük g]: Başta sıfır olmamak üzere 24 saat formatında saati verir. 1-23 arasında çıktı verir.
    h [Küçük H]: Başta sıfır olmak üzere 12 saat formatında saati verir. 01-12 arasında çıktı verir.
    H [Büyük h]: Başta sıfır olmak üzere 24 saat formatında saati verir. 01-23 arasında çıktı verir.
    i [Küçük I]: Dakika bilgisini 00 ve 59 arasında verir.
    j [Küçük J]: Başta sıfır olmadan ayın içinde hangi günde olduğunuzu verir. 1-31 arasında çıktı verir.
    l [Küçük L]: Günün tam adını ingilizce olarak verir. Sunday gibi bir çıktı verir.
    L [Büyük l]: Artık yıl için kullanılır. Eğer tarih artık yıl içerisinde ise true, değilse false olarak işler.
    m [Küçük M]: Başta sıfır olmak üzere 01-12 arasında yılın içerisindeki ayın sayısını verir.
    M [Büyük m]: Üç harfli ay adını verir.
    n [Küçük N]: Başta sıfır olmamak üzere 1-12 arasında yılın içerisindeki ayın sayısını verir.
    s [Küçük S]: Başta sıfır olmak üzere 0-59 arasında saniye değerini verir.
    S [Büyük s]: İngilizce`de “nci” anlamına gelen st, nd, rd, th değerlerinin çıktısını, ardından geldiği sayının değerine göre verir.
    t [Küçük T]: Belirtilen ayın kaç gün olduğunu verir. 28-31 arası çıktı verir.
    T [Büyük t]: Üç harfli sunucunun saat dilimi ayarını verir. EST, MDT gibi çıktılar verir.
    U [Büyük u]: UNIX zaman mührüdür. 01.01.1970 tarihinden günümüze kaç saniye geçtiğini verir.
    w [Küçük W]: Başta sıfır olmamak üzere haftanının gününü sayısal değerde verir. 0-6 değerleri arasında çıktı verir.
    y [Küçük Y]: İki rakamlı yıl çıktısı verir. Örneğin 2004 yılının bu formattaki çıktısı 04 olacaktır.
    Y [Büyük y]: Dört rakamlı yıl çıktısını verir. 2004 gibi bir çıktı verecektir.
    z [Küçük Z]: Yılın hangi gününde olduğumuzu verir. 0-365 arasında bir çıktı verecektir.
    Şimdi bu fonksiyonun yukarıdaki parametreleri alarak nasıl kullanıldığına ilişkin bir örnek yapıp geçelim.

    PHP Kod:

    <?php
    echo date(&#8220;d.m.Y”);
    ?>

    Yukarıdaki örneğin çıktısı bugün için "03.04.2004" olacaktır. Zaten tüm parametreleri yukarıdaki örneğe
    uyarlayıp kullanabileceğiniz için uzun uzun her birine örnek vermenin anlamı yok.

    checkdate(); Fonksiyonu

    Bu fonksiyon ile verilen tarihin geçerliliği tespit edilir. Eğer verilen şekilde bir tarih varsa sonuç true (1), yoksa false (0) olarak döner. Yazılışı;

    checkdate(ay, gün, yıl);

    Ay numarası yazarken 01, 02 gibi kullanım yerine 1, 2 gibi başta sıfır olmadan yazmalısınız.

    PHP Kod:

    <?php
    # Çıktısı: 1 olacaktır. Çünkü böyle bir tarih mevcuttur.
    echo checkdate(8, 22, 1988);
    ?>

    mktime(); Fonksiyonu

    Genellikle takvim ve benzeri uygulamalarda geçmiş bir tarihi, yahut ileri bir tarihi hesaplamamız ve tespit etmemiz gerekebilir. PHP içerisinde bunu yapmak için mktime(); kullanılır. Bu fonksiyon ile geçmiş yahut gelecek bir tarihin hangi güne denk geldiği vs. bulunabilir.

    Yazım şekli;

    mktime(saat, dakika, saniye, ay, gün, yıl);

    Aşağıdaki örneği incelerseniz kullanımı hakkında bilgi edinebilirsiniz. Aşağıda, girilen tarihin hangi güne denk geldiğini buluyoruz.

    PHP Kod:

    <?php

    # Zaman belirtiyoruz.
    $x = mktime(0, 0, 0, 8, 22, 1988);

    # Ekrana belirtilen zamana ait gün adını basıyoruz.
    echo date("l", $x);

    ?>

    Örnekte, 00:00:00 saatinde 22 Ağustos 1988 tarihinin hangi güne geldiğini bulduk. Bu fonksiyon demin de dediğim gibi takvim uygulamaları ve benzeri uygulamalarda çok işe yaramaktadır. Tarih hesaplamalarında genel olarak işe yaramakta demek daha doğru olur.

    getdate(); Fonksiyonu

    Bu fonksiyon bir dizi (array) yaratarak alacağı parametrelere göre çıktı verir. Fonksiyonun alabileceği parametreler şunlardır;
    seconds (Saniyeler)
    minutes (Dakikalar)
    hours (Saatler)
    mday (Ay içerisindeki gün sıra sayısı)
    wday (Hafta içerisindeki gün sıra sayısıdır. 0-6 arasında değer alır.)
    mon (Yıl içerisindeki ayın sıra sayısı)
    year (Yıl)
    yday (Yıl içerisindeki günün sıra sayısı)
    weekday (Gün)
    month (Ay)
    0 (Sıfır rakamı. 01.01.1970 tarihinden günümüze kaç saniye geçtiğini verir (UNIX zaman mührü).
    Aşağıdaki şekilde, getdate(); fonksiyonunun oluşturduğu dizinin (array`in) tüm elemanlarını listeleyebilirsiniz. Hepsinin çıktısını alabilirsiniz;

    PHP Kod:

    <?php

    # Şu andaki tarihi al
    $x = getdate();

    # Diziyi ekrana bas.
    print_r($x);

    ?>

    Örnek bir kullanım ise;

    PHP Kod:

    <?php

    # Şu andaki tarihi al
    $x = getdate();

    # Gün-Ay-Yıl olarak tarihi bas.
    echo $x[weekday] ."-". $x[month] ."-". $x[year];

    ?>

    Bu örneğin çıktısı Tuesday-April-2004 gibi bir şey olacaktır. Çıktıyı Türkçe alabilmek için siz de bir array yapısı yaratın ve Türkçe çıktı almayı deneyin. Böylece hem array üzerine örnek yapmış olur, hem de basit bir script hazırlamış olursunuz

    time(); Fonksiyonu

    01.01.1970 tarihinden bu yana geçen zamanı saniye cinsinden verir. Yazılışı şöyledir;

    PHP Kod:

    <?php
    echo time();
    ?>

    Bu fonksiyon tarih bazlı hesaplamalarınızda işinize yarayabilir. Örneğin sitenizin ziyaretçilerinin bir takım işlemlerine zaman sınırlaması koymak istiyorsanız, bu fonksiyon ile hesap yapabilirsiniz.

    gettimeofday(); Fonksiyonu

    Bu fonksiyon getdate(); fonksiyonuna benzer. Aynı o fonksiyonda yaptığımız gibi print_r(); ile bu fonksiyonun oluşturduğu dizinin (array`in) elemanlarını ve değerlerini görebilirsiniz. Alabileceği parametrelerde zaten o dizinin elemanlarıdır. Kısaca bahsetmek gerekirse;
    sec (saniyeler)
    usec (mikrosaniyeler)
    minuteswest (Greenwich`e göre batıdaki dakikalar)
    dsttime (Alacağı değerler aşağıdadır.)
    DST Değerleri
    0 => DST dışında.
    1 => Amerika
    2 => Avustralya
    3 => Batı Avrupa
    4 => Orta Avrupa
    5 => Doğu Avrupa
    6 => Kanada
    7 => Büyük Britanya
    8 => Romanya
    9 => Türkiye
    10 => Avustralya (1986 sonrası)
    Kullanımı tıpkı getdate(); gibi olup, zaman hesaplarında kullanılabilir.

    Tarih ve zaman işlemleri ile ilgili yazacak pek fazla bir şey kalmadı. Bunlar haricinde bir takım fonksiyonlar elbette mevcut fakat pek işlevsel olduğu söylenemez. Eğer gerek duyulursa onları da yazarız.