PHP’de Zaman Fonksiyonları

Zaman Fonksiyonları

time()
mktime()
getdate()
date()

PHP zaman bilgisi bildiğimiz gibi değil unix epoch biçiminde kullanılmaktadır. Unix epoch biçimi tam olarak 1 Ocak 1970 00:00:00 anından bu zamana kadar geçen zamanın saniye cinsinden ifadesidir.

1) time()

Şuanki zaman bilgisini (tarih, saat, dakika ve saniye) unix epoch biçiminde gönderir. Aşağıda, şimdiki zamanın bilgisi ekrana yazdırılmaktadır. Sayfayı yenilediğinizde sayının saniyede bir arttığını göreceksiniz. Buradan da şimdiki zamanın belirli bir başlangıç anından bu yana geçen sürenin saniye cinsinden ifadesi olduğunu kolayca anlayabilirsiniz. time() fonksiyonu parametre almaz. Örneği inceleyiniz.


<?php
$simdi=time();
echo "Şimdiki zaman: ",$simdi;
?>

Örnek: Yarının zaman bilgisini ekrana yazdıralım.


<?php
$simdi=time();
$yarin=$simdi+24*60*60;
echo "Yarın: ",$yarin;
?>

Şimdiki zamana saniye cinsinden değer ekleyerek yada çıkararak zamanda ileri yada geri gidebilirsiniz. Yukarıdaki örnekte tam 24 saat sonrasına gidilmiştir. Bu da yarın olmaktadır. Şimdi de 24 saat öncesine yani düne gidelim.


<?php
$simdi=time();
$dun=$simdi-24*60*60;
echo "Dün: ",$dun;
?>

Örnek: Tam bir hafta sonrasına gidelim.


<?php
$simdi=time();
$gelecek_hafta=$simdi+7*24*60*60;
echo "Gelecek Hafta : ",$gelecek_hafta;
?>

2) mktime($saat, $dakika, $saniye, $ay, $gun, $yil)

Tam olarak belirtilen zamana gitmeyi sağlar. Başka bir ifadeyle belirtilen zamanı unix epoch biçimine dönüştürür. Eğer zaman belirtilmezse şimdiki zaman bilgisini unix epoch biçiminde verir. Buraki sıralamaya dikkat ediniz. (saat, dakika, saniye, ay, gün, yıl) Örnek: Şimdiki zamanı hem time() ile hem de mktime() ile ekrana yazdıralım.


<?php
$simdi1=time();
$simdi2=mktime();
  
echo "Şimdi 1: ",$simdi1,"<br>";
echo "Şimdi 2: ",$simdi2,"<br>";
?>

Örnek: 18 Haziran 1983 tarihinde doğan birinin doğum gününü ekrana unix epoch biçiminde yazdıralım.


<?php
// dogum gününün ilk anları. 
//Saat,dakika ve saniye sıfırdır.
 
$dogum=mktime(0,0,0,6,18,1983);
echo "Doğum tarihiniz : ",$dogum;
?>

Örnek: 18 Haziran 1983 tarihinde doğan birinin kaç gündür yaşadığını bulalım.


<?php
$dogum=mktime(0,0,0,6,18,1983);
$simdi=time();
 
// yaşadığı zamanın saniye karşılığı
$fark=$simdi-$dogum; 
 
 // fark'ın kaç güne karşılık geldiği bulunuyor
$gun=$fark/(24*60*60);
 
// ondalıklı gün aşağıya yuvarlanıyor.
$gun=floor($gun); 
echo "Siz $gun gündür yaşamaktasınız.";
?>

Örnek: 1 ocak 2011 ile şimdiki zaman arasında kaç gün, kaç saat, kaç dakika ve kaç saniye olduğunu bulalım. Dikkat ediniz verilen tarih bu kodun çalışmasına göre geçmiş yada gelecek bir zaman olabilir.


<?php
$simdi=time();
$zaman=mktime(0,0,0,1,1,2011);
 
// geçmiş zaman ihtimaline karşılık mutlak değeri alınıyor.
$fark=abs($simdi-$zaman); 
$gun=floor($fark/(24*60*60));
$saat=floor(($fark-$gun*24*60*60)/(60*60));
$dakika=floor(($fark-($gun*24*60*60+$saat*60*60))/60);
$saniye=$fark-($gun*24*60*60+$saat*60*60+$dakika*60);
  
echo "1 Ocak 2011 ile aramızda $gun gün
 $saat saat $dakika dakika $saniye saniye vardır.";
?>

3) getdate($zaman)

Unix epoch biçiminde verilen zamanın bilgisini bir dizi şeklinde gönderir. Zaman verilmezse şimdiki zaman bilgisini bir dizi olarak gönderir. Dönen dizinin indisleri ve değerleri şöyledir.

Dizi indisleri=>Değerleri

seconds => saniye
minutes => dakika
hours => saat
mday => ayın kaçıncı günü olduğu bilgisi (1,2,3, … 31)
wday => haftanın kaçıncı günü olduğu bilgisi (Pazar: 0, P.Tesi: 1, … C.tesi: 6 )
mon => ay (1,2,…12) year => yıl (2001,2002,…)
yday => yılın kaçıncı günü olduğu bilgisi (1,2,3, …365)
weekday => haftanın hangi günü olduğu bilgisi (Sunday, Monday, … Saturday)
month => ay (January,February,…December)
Örnek: Şimdiki zamanın tüm bilgilerini getdate() ile ekrana yazdıralım.


<?php
// dönen bir dizidir dikkat ediniz.
$simdi=getdate(); 
print_r($simdi);
echo "<hr>";
echo "Saniye: ",$simdi["seconds"],"<br>";
echo "Dakika: ",$simdi["minutes"],"<br>";
echo "Saat: ",$simdi["hours"],"<br>";
echo "Gün: ",$simdi["mday"],"<br>";
echo "Haftanın kaçıncı günü: ",
$simdi["wday"],"<br>";
 
echo "Ay: ",$simdi["mon"],"<br>";
 
echo "Yıl: ",$simdi["year"],"<br>";
 
echo "Yılın kaçıncı günü: ",
$simdi["yday"],"<br>";
 
echo "Haftanın hangi günü: ",
$simdi["weekday"],"<br>";
 
echo "Yılın hangi ayı: ",
$simdi["month"],"<br>";
 
?>

Not: EasyPHP kurulumunda zaman dilimi varsayılan olarak Paris şeklinde gelmektedir. Bundan dolayı zaman bilgisi ekranda yanlış görünebilir.

Bunun için http://localhost/home adresini kullanarak açılan sayfanın altında bulunan Paris seçeneğini Istanbul olarak değiştirip yanındaki küçük ok ile onaylamalısınız. Haftanın ilk gün (0) Sunday’dir. Unutmayınız. Örnek: Hangi gün doğduğumuzu ekrana yazdıralım.


<?php
$dogum_gunu=mktime(0,0,0,6,18,1983);
 // unix epoch biçimindeki dogum gunumuzu verdik
$zaman=getdate($dogum_gunu);
echo "18 Haziran 1983 günü : ",$zaman["weekday"];
?>

Örnek: Bir sonraki yılbaşına kaç gün olduğunu bulalım.


<?php
$simdi=getdate();
$sonraki_yil=$simdi["year"]+1;
$yilbasi=mktime(0,0,0,1,1,$sonraki_yil);
$gun=floor(($yilbasi-time())/(24*60*60));
echo "Yılbaşına $gun gün vardır.";
?>

Örnek: Şimdiki zaman göre getdate() ile dün ve yarının hangi günler olduğunu ekrana yazdıralım.


<?php
$simdi=getdate();
$gun=$simdi["mday"];
$ay=$simdi["mon"];
$yil=$simdi["year"];
$dun=getdate(mktime(0,0,0,$ay,$gun-1,$yil));
$yarin=getdate(mktime(0,0,0,$ay,$gun+1,$yil));
echo "Dün : ",$dun["weekday"],
"<br>Yarın : ",$yarin["weekday"];
?>

4) date($bicim, $zaman)

Unix epoch biçimindeki zaman bilgisini ekranda istenilen biçimde göstermek için kullanılır. Zaman belirtilmezse şimdiki zaman ile çalışır. Biçimlerde kullanılan parametreler şunlardır.

Parametre – İşlevi

a – 12 saat esasına dayanan Anglo-Sakson sistemlerinde öğleden önce (“am”) veya öğleden sonra (“pm”) işaretini sağlar.
A – Aynı işaretlerinin büyük harfle yazılmasını sağlar.
d – İki haneli gün sayısı, tek haneli günlerin önüne sıfır konur: “01”-“31”
D – Üç haneli gün adı kısaltması: “Sun”,”Mon”, ..
F – Uzun ay adı: “January”,”February”, ..
h – 12 saatlik sistemde saat: “01”-“12”
H – 24 saatlik sistemde saat: “00”-“23”
g – 12 saatlik sistemde tek haneli saatlerin önüne sıfır konmadan saat: “1”-“12”
G – 24 saatlik sistemde tek haneli saatlerin önüne sıfır konmadan saat: “0”-“23”
i – Dakika: “00-59”
j – Tek haneli sayıların önüne sıfır konmadan gün sayısı: “1”-“31”
l – (Küçük L harfi) Uzun gün adı: “Sunday”, “Monday”, ..
L – Artık yıl olup olmadığına ilişkin Boolean (doğru/yanlış) değişken. Artık yıl ise 1 değilse 0 döndürür.
m – Tek haneli sayıların önüne sıfır konarak ay sayısı: “01”-“12”
n – Tek haneli sayıların önüne sıfır konmadan ay sayısı: “1”-“12”
M – Kısaltılmış ay adı: “Jan”,”Feb”, .. s – Saniye: “00”-“59”
S – İngilizce “‘nci” anlamında 2 karakter ek: “th”,”nd”
t – Belirtilen ayın toplam gün sayısı: “28”-“31”
w – Haftanın kaçıncı günü olduğu bilgisi: “0” Pazar, “6” Cumartesi
Y – Dört haneli yıl: “2000”
y – İki haneli yıl “02”
z – Yılın kaçıncı günü olduğu bilgisi: “0”-“365”
Örnek: Şimdiki tarihi ekranda 05/06/2010 şeklinde gösterelim.


<?php
echo date("d/m/Y");
?>

Örnek: Yarını 26 April 2010 Monday biçiminde ekrana yazdıralım.


<?php
echo date("d F Y l",time()+24*60*60);
?>

Örneğimizde şimdiki zamana saniye olarak bir gün eklenip date() fonksiyonuna verildi. Örnek: 18.06.2010 tarihini ekrana 18 June 2010, Friday biçiminde yazdıralım.


<?php
echo date("d F Y, l",mktime(0,0,0,6,18,2010));
?>

Örnek: Veritabanından 2010-04-26 biçiminde okunduğu kabul edilen tarihi ekrana 26 April 2010 Monday biçiminde yazdıralım.


<?php
$tarih="2010-04-26";
 
// - ile ayrılan sayılardan bir dizi oluşturuldu
$tarih=explode("-",$tarih); 
 
// tarih unix epoch biçimine çevriliyor
$zaman=mktime(0,0,0,$tarih[1],$tarih[2],$tarih[0]); 
echo date("d F Y l",$zaman);
?>

Örnek: Tanımlı olan tarihi ekrana türkçe olarak 26 Nisan 2010 Pazartesi biçiminde yazdırmaya çalışalım.


<?php
$tarih="2010-04-26";
// - ile ayrılan sayılardan bir dizi oluşturuldu
$tarih=explode("-",$tarih); 
 
// tarih unix epoch biçimine çevriliyor
$zaman=mktime(0,0,0,$tarih[1],$tarih[2],$tarih[0]); 
  
$tarih=date("d F Y l",$zaman);
  
  
$kaynak1=array("Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday","Sunday");
 
$hedef1=array("Pazartesi","Salı","Çarşamba",
"Perşembe","Cuma","Cumartesi","Pazar");
  
$kaynak2=array("January","February","March",
"April","May","June","July","August",
"September","October","November","December");
 
$hedef2=array("Ocak","Şubat","Mart","Nisan",
"Mayıs","Haziran","Temmuz","Ağustos",
"Eylül","Ekim","Kasım","Aralık");
  
$tarih=str_replace($kaynak1,$hedef1,$tarih);
$tarih=str_replace($kaynak2,$hedef2,$tarih);
echo $tarih;
?>

Örnek: Sizlerle, tarihi türkçe olarak farklı bir şekilde gösteren php kodunu paylaşacağım. İsterseniz kodları araştırıp inceleyebilirsiniz.

 

<?php
$tarih="2010-04-26";
@setlocale(LC_ALL, "turkish");
echo strftime("%d %B %Y, %A",strtotime("$tarih"));
?>

Be the first to comment

Leave a Reply

Your email address will not be published.


*