Kayıt Ol

Giriş

Şifremi Kaybettim

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Giriş

Kayıt Ol

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi adipiscing gravdio, sit amet suscipit risus ultrices eu. Fusce viverra neque at purus laoreet consequa. Vivamus vulputate posuere nisl quis consequat.

Php Dersleri – Tarih Ve Saat İşlemleri

Mobilhanem.com için hazırladığımız Php derslerimizde bu ders Tarih ve Saat İşlemleri konusunu anlatacağım.  Tarih ve saat işlemleri bizim genellikle ihtiyaç duyduğumuz ve olmazsa olmazlarımızdandır. Php de tarih 1 Ocak 1970 den başlar ve her saniye artar. Yani bir sayacımız olduğunu düşünün sayaç 1 ocak 1970 te sıfır değerindeyken dersimizi yayınlarken 123456789 gibi bir değere ulaşmıştır.  Bu değer unix zaman damgası (unix timestamp) olarak adlandırılır.  Php bizim bu sayıyla uğraşmamamız için bunu arka planda kendisi tarihe çevirir ve bize tarih cinsinden neye denk geldiğini söyler.  Şimdi yavaş yavaş tarih ve saat işlemlerine giriş yapalım.

date_default_timezone_set() Fonksiyonu

date_default_timezone_set() fonksiyonu bizim default zaman dilimini belirlememizi sağlar. ve parametre olarak hangi zaman diliminde işlemler yapacaksan bunu vermemiz gerekir.

Tarih ve saat işlemlerine başlamadan önce sunucuya biz şu saat dilimini kullanıyoruz bizim tarih ve saatimizi bu zaman diliminde ver gibisinden ifadelere yer vermek zorundayız. Örneğin: bu yıl saatlerin geri alınmamasıyla beraber neredeyse tüm web sitelerinde uygulamalarda saati hep 1 saat geride gösteriyordu. İşte bu ayarı düzgün yapmazsak bazen yanlış saat alıp yanlış işlemler yapabiliriz.

Doğru zaman dilimi kullanmazsak tarih ve saat işlemlerinde sürekli hatalar yaparız. Bu yüzden 19.11.2016 tarihinde Türkiye için doğru timezone değeri ‘Etc/GMT-3’ değeridir. Bu değeri date_default_timezone_set fonksiyonuna parametre verirseniz doğru tarih ve saat işlemleri yapabilirsiniz.

örneğin:

Php de tanımlı zaman dilimlerine Adresinden ulaşabilirsiniz.

time() Fonksiyonu

time() fonksiyonu şu anki unix timestamp değerini bize verir. Örneğin ben kodumu çalıştırdığımda 1479541808 şeklinde bir çıktı aldım.

date() Fonksiyonu

date() fonksiyonu bize o anki zamanı gün ay yıl saat dakika saniye cinsinden verir ve çok esnek bir fonksiyondur istediğimiz sırayla bize çıktı verebilir.  Fonksiyonumuz iki parametrelidir birinci parametre zaman biçimimiz ikinci parametre ise unix timestamp değeridir. ikinci parametreyi biz eklemezsek bu parametre php tarafında o anki timestamp değeri yani time() fonksiyonudur.

örneğin: gün.ay.yil saat:dakika:saniye şeklinde çıktı almak istersek aşağıdaki gibi bir parametre ile fonksiyonumuzu çağırmamız gerekir.

Örneğimizdeki d,m,y gibi değerleri biz kafamızdan sallamadık tabikide 🙂 Bu değerler php tarafından belirlenmiş değerlerdir. Bu değerlere zaman biçimlendirme karakterleri denir. Bütün karakter listesine Bu Adresten ulaşabilirsiniz. Aşağıda en çok kullanılan karakterleri tablo şeklinde belirteyim .

HarfAçıklamasıÖrnek
dİki haneli şeklinde günü verir27
mİki haneli şeklinde ayı verir07
YDört haneli şeklinde yılı verir2013
Hİki haneli ve 24 saat formatında saati verir19
iİki haneli şeklinde dakikayı verir38
sİki haneli şeklinde saniyeyi verir59
l(küçük L) Haftanın gününün ingilizce adını verirMonday

 

yukarıdaki verdiğimiz biçimlendirme karakterlerini date() fonksiyonu içerisinde istedğiniz şekilde kullanabilirsiniz. Birkaç örnek verecek olursak:

Geçmiş Zaman İşlemleri

Bazen geçmişe yönelik işlemler yapmamız gerekebilir. Örneğin bir hafta önce bugün ayın kaçıydı ?

Basitçe düşünecek olursak time() fonksiyonu bize 1970 ten bu güne geçen saniye sayısını veriyordu. Bir haftalık saniyeyi hesaplarsak bunu time() fonksiyonundan çıkarsak sonucumuza ulaşmış oluruz. Hemen kodumuzu yazalım.

Bugün ayın 19u ve kodumuz çıktı olarak 12 sonucunu verdi. Gerçektende 1 hafta önce ayın 12siydi. Doğru sonuca ulaşmış olduk. Geçmişe yönelik işlemler tabiki bu kadar kolay değil mesela iki tarih arasında kaç gün var ? bunun gibi işlemler için biraz daha işin detayına girmeliyiz 🙂

mktime() Fonksiyonu

mktime() fonksiyonu bizim istediğimiz bir tarihin unix değerini bize veriyor. Bu fonksiyon sayesinde istediğimiz bir tarihin unix değerini öğrenebiliyoruz. Fonksiyonumuzun 6 tane parametresi var. Parametreleri sırasıyla  saat, dakika, saniye, ay, gün, yıl şeklindedir. hemen bir örnek verecek olursak:

Dersi yazdığım günden bir hafta öncesinin unix değerini bulalım.

mktime fonksiyonu tek başına basit gibi görünse de iki üç dört tarih ile alakalı işlemler yaparken kafanız biraz karışabilir. Bu yüzden temel mantığını yani 1970 ten bu güne geçen saniye sayısını unutmamakta çok fayda var.

Mesela bir önceki ayın 19u ile bu ayın 19 u yani bugün arasında kaç gün ve kaç saniye varmış bunları bulalım.

Kodun içerisinde gerekli açıklamaları yaptım arkadaşlar. intval() fonksiyonunu daha öncede görmüştük, parametre olarak aldığı değeri integera çeviriyordu. Bizim değerimizde küsüratlı geldiği için tam küsüratı silmek için intval fonksiyonundan yararlandık.

strtotime() Fonksiyonu

strtotime fonksiyonu parametre olarak aldığı bir tarihi unix timestamp değerini verir. ve bizim için tarih üzerinde işlemler yapar. Ne gibi işlemler yapar örnek verecek olursak:

  • +1 day : 1 gün ekler
  • +1 week: 1 hafta ekler
  • +1 month: 1 ay ekler
  • next Monday: 1 sonraki pazartesi
  • last Monday 1 önceki pazartesi

gibi değerleri parametre olarak verebiliriz. örneğin:

Bize saniye cinsinden değerler verir. Mesela bi bugünden sonra ilk pazartesi ayın kaçıymış öğrenmek istersek:

Biz sürekli pazartesi yapıyoruz ama bunu diğer günler içinde kullanabilirsiniz. veya hep 1 artırma örneği yaptık ama bunu istedğimiz sayıda artırma azaltma yapabiliriz. Tamamen bizim isteğimize kalmış birşey.

Dersimiz zaten uzun oldu arkadaşlar bunun için bir dersimi daha tarih işlemlerine ayıracağım. Bunlar tarih işlemleri ile ilgili temel şeyler. Henüz OOP yapısını görmediğimiz için belki yaptığımız işlemler zor geliyor olabilir ama oop ye geçince Php de tanımlı DateTime sınıfı sayesinde bu kadar zorlanmadan işlemlerimizi halledebileceğiz ama yine temelinde bu dersimiz yatıyor bunları bilmemiz tabikide gerekiyor 🙂

Bir sonraki dersimiz Php Dersleri – Tarih Ve Saat işlemleri – 2 dersimizde görüşmek üzere kendinize iyi bakın 🙂

 

Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm Php Dersleri için tıklayınız..

 

 

 

Yazar Hakkında

Erzurum Atatürk Üniversitesi Bilgisayar Mühendisliği Bölümü Öğrencisi Web & Android Developer #erzurum