Php Tarih ve Saat İşlemleri

 bcakir
 14 Ocak 2012
 Php

Merhaba arkadaşlar, bu yazımda Php ile tarih ve zaman konusunu işleyeceğiz. Bu konu aslında çok geniş, çok farklı amaçlara yönelik fonksiyonlar ve kodlar var fakat ben temel mantığını ve sık kullanılan fonksiyonları anlatacağım. Anlatacaklarım, sizlerin karşılaşacağı birçok zaman ile ilgili konuyu kapsayacak. Ayrıca konuyu anlamanız için de birkaç tane örnek yapacağız. Yazımızda hem kullandığımız saate göre işlemler yapmayı hem de daha çok uygulamalarda kullanılan, zamanı yönetmek için geliştirilmiş timestamp kodunu kullanmayı anlatacağım. Timestamp kısaca, bulunulan zamanın sayısal değeridir. Zamanı sayısal değere çevirerek birçok değişik uygulama yapmamız mümkün. Örneğin; doğum tarihleri arasındaki farkları hesaplama, kaç gündür hayatta olduğumuzu bulma, belirli aralıklarla veritabanını güncelleme, 5 dk içerisinde sitemizdeki çevrimiçi kullanıcı sayısını bulma gibi.

<?php
//yerel zaman timestamp olarak
echo time();
//örnek ekran çıktısı 1326539540

//yerel zaman (tarih + saat)
echo date("d-m-Y H:i:s");
//örnek ekran çıktısı 14-01-2012 11:12:20

//yerel zamanın alınması
$gun=date("d");
$ay=date("m");
$yil=date("Y");
$saat=date("H");
$dakika=date("i");
$saniye=date("s");

//mktime ile timestampa çevrilmesi
echo mktime($saat, $dakika, $saniye, $ay, $gun, $yil);
//strtotime ile timestampa çevrilmesi
echo strtotime('14-01-2012 11:12:20');

//timestampın kullandığımız saate çevrilmesi
echo date("d-m-Y H:i:s", 1326539540);

//zamanın 24 saat sonrasi
$yarin = time()+(24*60*60);
echo '24 saat sonrasi: '.date('d-m-Y H:i:s', $yarin);
//strtotime ile 24 saat sonrası
echo '24 saat sonrasi: '.date('d-m-Y H:i:s', strtotime('+1 day'));
//strtotime ile 1 ay öncesi
echo '1 Ay sonrasi: '.date('d-m-Y', strtotime('-1 month'));
?>

En çok kullanılan ve sizlerinde çok fazla karşılaşacağı zaman fonksiyonlarını anlattım. Şimdi bunlarla iki farklı örnek yapalım. İlk örnekte, kullanıcının kaç gündür yaşıyor olduğunu bulalım.

<?php
//doğum tarihi girin
$d_tarihi="05-01-1980";
echo tarih($d_tarihi).' gündür hayattasın.';

//gün hesaplama fonksiyonu
function tarih($d_tarihi){
    $d_timestamp=strtotime($d_tarihi);
    $fark=time()-$d_timestamp;
    return floor($fark/(24*60*60));
}
?>

İkinci örneğimiz; çoğu oyunlarda belirli bir sürede kullanıcıya enerji yüklerler. Bizim oyunumuzda, her 15 dakikada için kullanıcıya 1 enerji verelim ve bu enerjileri kullanıcı oyuna girdimi hesabına aktaralım.

<?php
//oyuncunun son girdiğindeki durumu
$enerji_miktari=17;
$eski_zaman='1326539540';

$simdiki_zaman=time();
$fark=$simdiki_zaman-$eski_zaman;
//eski zamandan şimdiye kaç kere 15 dk geçmiş
$peryot=ceil($fark/(15*60));

//toplam enerji miktarı
$t_enerji=$enerji_miktari+$peryot;
echo 'Hesabınızda '.$t_enerji.' enerji var.';
?>

Sosyal oyunların temelinde yatan mantık ile ilgili örneğimizi de yaparak bir yazımızın daha sonuna gelmiş olduk. Sizler de zamanı sayısal değere çevirerek çok farklı türde uygulamalar yapabilirsiniz. Gelecek yazılarda görüşmek üzere, hoşçakalın.

 6.302 Okunma

Bu yazıya 7 yorum yapılmış.

  1. merhaba ustad birşey merak ettim mesela kullanıcı geldı biz bunu mysql kaydettik geliş zamanı falan fılan 24 saat sonra tekrar geldiginde veya 25 saat sonra tekrar geldıgınde kullanıcı nasıl bir sorgu yapabıliriz de bu sorguyu çalıştırırız?

    • 24 saatlik farkın geçip geçmediği, kullanıcının her girişinde kontrol edeceksin (son girdiği tarihi veritabanına ya da çerezlere kaydetmek zorundasın). Yani, son girdiği ile şimdi girmiş olduğu timestamp değeri arasındaki farkın büyüklüğüne bakacaksın ve timestamp olarak aradaki fark 1 gün (60*60*24) bu kadar mı?

  2. mrhb ben php ile oluşturacağim site için bir haftalık yemek listesini belirtmek istiyorum.Bunu nasıl yapabilirim date(“d M Y “); şeklinde yazıyorum ama bu ifade ile yalnızca şuanki zamanı ögrenebiliyorum benim bir,iki üç..gün sonrasını da bildirmem gerekiyor..Yardımcı olursanız çook sevinirim..teşekkürler

    • Yukarıda bulunan açıklamaları detaylıca incelerseniz, istediğinizi kolayca yapabilirsiniz. Örneğin;
      echo ‘3 gün sonrasi: ‘.date(‘d-m-Y H:i:s’, strtotime(‘+3 day’));

  3. Merhabalar.

    Peki üyelerimizin özel mesajlasmalarını belirli saatler arasında kapatmak istiyoruz diyelim. Bunu hangi yöntem ile yapabiliriz basit bir örnek verebilirmisin?

    mesela bugun saat 06:00 dan 10:00 a kadar özel mesajlasma kapalı olsun.

    basit bir örnek ile aydınlatırsan sevınırım.

  4. 1326539540 şeklindeki tarihi normal tarihe atıyorum 11.01.2012 ve 11 Ocak gibi 2012 nasıl çevirebilirim?

  5. sitene gelene kadar 20 yer gezdim hiç biri adam gibi bişey anlatmamış.
    sana helal olsun. 30 saniyede çözdüm sorunu.

Yazı hakkında görüşlerinizi belirtmek istermisiniz?

Daha fazla Php
Kapat