PHP Tarih ve Saat İşlemleri – PHP Zaman Fonksiyonları

PHP Tarih ve Saat İşlemleri – PHP Zaman Fonksiyonları

PHP tarih saat işlemleri için kullanılabilecek birçok hazır PHP zaman fonksiyonları bulunmakta. Bu zaman fonksiyonları ile çoğu tarih işlemi kolaylıkla yapılabilmekte. Bu yazıda bu fonksiyonların neler olduğu ve nasıl kullanıldığını ayrıntılı bir şekilde göreceksiniz.

Ayrıca bu içerikle alakalı olarak PHP türkçe tarih konulu yazıma göz atabilirsiniz. PHP zaman fonksiyonlarına giriş yapalım.

date_default_timezone_set()
fonksiyonu

PHP tarih ve zaman işlemleri yaparken ayarlamaların tam ve hatasız olması için ilk olarak bulunduğumuz ülkenin zaman dilimini sunucuya bildirmemiz gerekir. Türkiye için örnek olarak ‘Europe/Istanbul’ zaman dilimini seçilebilir. PHP zaman dilimleri için bu sayfaya göz atabilirsiniz. PHP date_default_timezone_set fonksiyonu ile belirli ülkenin zaman dilimini seçebilir veya sunucuda tanımlı zaman dilimini öğrenebilirsiniz.

date_default_timezone_set('Europe/Istanbul'); //zaman dilimini istanbul olarak ayarla
echo date_default_timezone_get(); //seçili zaman dilimini yazdır 
//örnek çıktı: Europe/Istanbul

time() fonksiyonu

PHP time fonksiyonu kullanımı ile şu an ki zamanı unix zaman damgası cinsinden saniye değeri olarak öğrenebiliriz.

echo time(); // çıktı: 1518870488

Unix zaman damgası nedir? 1 Ocak 1970 00:00:00 tarihinden bu yana geçen zaman diliminin saniye cinsinden değeridir. Unix time olarak da adlandırılan bu sonuç PHP tarih saat işlemlerinde sıklıkla kullanılmakta. Elde edilen unix zaman damgası değerini PHP zaman fonksiyonları ile istenilen formatlara dönüştürülerek birçok zaman işlemleri yapılmaktadır.

date() fonksiyonu

PHP tarih saat fonksiyonları içerisinde en çok kullanılanlarından date fonksiyonu, ilk parametresinde belirtilen tarih formatına ikinci parametresinde belirtilen sayısal değerdeki zaman damgasını dönüştürür. İkinci parametresine herhangi bir değer girilmez ve tek parametre ile kullanılır ise o anki zaman değerine göre tarih biçimlendirme işlemi yapılır. PHP date fonksiyonu kullanımı aşağıdaki gibidir.

$tarih = date('d-m-Y H:i:s',time());
echo $tarih; //çıktı: 17-02-2018 16:28:53

Yukarıdaki örnekte time fonksiyonu ile o anki zaman değeri date fonksiyonu ile gün-ay-yıl saat-dakika-saniye biçimine dönüştürülerek tarih değişkenine aktarılıyor ve ekrana yazdırılıyor.

Aşağıdaki fonksiyonda ise zaman damgasının girildiği ikinci parametre kullanılmıyor ve o anki zaman değeri varsayılan olarak biçimlendirilip direkt ekrana yazdırılıyor.

echo date('Y/m/d H/i/s'); //çıktı: 2018/02/17 16:28:53

Zaman biçimlendirme karakterlerinin yerlerinin değişmesi ve karakterlerin arasındaki işaretlere göre date fonksiyonu ile PHP tarih formatını değiştirme işlemi gerçekleştiriliyor.

Aşağıdaki tabloda date fonksiyonunda kullanılabilecek zaman biçimlendirme karakterleri listelenmektedir. PHP tarih format karakterleri hakkında daha fazla ayrıntı için buraya tıklayın.

Karakter Açıklama Örnek
s Sıfırlı şekilde iki haneli saniye değeri 07
i İki haneli dakika değeri 05
H İki haneli 24 saat biçiminde saat değeri

00 ile 23 arası
d İki haneli gün değeri 01 ile 31 arası
m İki haneli ay değeri 01 ile 12 arası
Y 4 haneli yıl değeri 2017
j Tek haneli gün değeri 4
n Tek haneli ay değeri 1 ile 12 arası
y İki haneli yıl değeri 18,96
l (küçük L harfi) Metinsel şekilde ingilizce haftanın günleri Saturday
F Metinsel şekilde ingilizce ay isimleri February
z Sayısal şekilde yılın günleri 0 ile 365 arası

mktime() fonksiyonu

Girilen zaman değerlerine göre unix zaman damgası biçiminde zaman değeri oluşturmak için kullanılır. Parametre kullanılmadan mktime fonksiyonu kullanılır ise time fonksiyonu ile aynı işlevi görür. PHP mktime fonksiyonu kullanımı aşağıdaki gibidir.

Mktime içerisine girilen parametrelerin düzeni: Saat, dakika, saniye, ay, gün, yıl, yaz saati

echo mktime(); //örnek çıktı: 1518888869
echo time(); //örnek çıktı: 1518888869

$saat = 11;
$dakika = 15;
$saniye = 30;
$ay = 10;
$gun = 17;
$yil = 1996;

echo mktime($saat,$dakika,$saniye,$ay,$gun,$yil); //çıktı: 845550930

7 parametre varsayılan olarak ‘-1’ değeri tanımlıdır yani yaz saati uygulamasının olup olmadığının bilinmediği durumda kullanılır. Yaz saati uygulamasının olduğu durumda ‘1’, olmadığı durumda ise ‘0’ değeri girilir.

strtotime() fonksiyonu

PHP strtotime fonksiyonu içerisine girilen metinsel zaman ifadelerini unix zaman damgasına çevirme işlemini gerçekleştirir. 2 parametre ile kullanılır. İlk parametre zaman değeri ile işlemlerin yapılmasını sağlayan metinsel ifadeler, ikinci parametre ise zaman değeri. İkinci parametre kullanılması zorunlu değildir ve varsayılan olarak time() fonksiyonu ile anlık zaman değerini kullanır. PHP tarih saat fonksiyonlarından birisi olan strtotime fonksiyonu kullanımı aşağıdaki gibidir.

$bugun = strtotime('17.02.2018 22:21');
echo $bugun.' - '.date('d-m-Y H:i:s',$bugun).'
'; //örnek çıktı: 1518906060 - 17-02-2018 22:21:00

Yukarıdaki örnekte, strtotime fonksiyonunun içerisine string türde girilen zaman değerini Unix zaman damgasına çevirip, date fonksiyonu ile tekrar anlaşılabilecek hale dönüştürüp ekrana yazdırma işlemi gerçekleştiriliyor.

Aşağıdaki şekilde de kullanılabilir.

echo strtotime('2018-02-17').'
'; //çıktı: 1518825600 echo strtotime('2018-02-17 00:00:00').'
'; //çıktı: 1518825600 echo strtotime('12:02:59').'
'; //çıktı: 1518868979 echo strtotime('17.02.2018 12:02:59').'
'; //çıktı: 1518868979

Not: Parametre olarak girilen
metinsel ifade de gün-ay-yıl tam olarak zaman belirtildiği zaman
ikinci parametrede girilen zaman değeri bir anlam ifade etmez.

Aşağıdaki örnekte ise strtotime fonksiyonlarından çıkan unix zaman damgalı saniye değerini date fonksiyonu ile hangi güne ait olduğunu anlayabilecek hale çeviriyoruz ve ekrana yazdırıyoruz. Böylelikle aralarındaki farkı daha net görebiliriz.

$tarih1 = strtotime('+1 day');
echo $tarih1.' - '.date('d-m-Y H:i:s',$tarih1).'
'; //örnek çıktı: 1518981804 - 18-02-2018 19:23:24 $tarih2 = strtotime('+1 day',time()); echo $tarih2.' - '.date('d-m-Y H:i:s',$tarih2).'
'; //örnek çıktı: 1518981804 - 18-02-2018 19:23:24 $tarih3 = strtotime('+1 day',time()+(60*60*24)); echo $tarih3.' - '.date('d-m-Y H:i:s',$tarih3).'
'; //örnek çıktı: 1519068204 - 19-02-2018 19:23:24

Strtotime fonksiyonlarının ikinci
parametresine girilen zaman değerine 1 gün eklenmiş oluyor. İlk
fonksiyon ile ikinci fonksiyonun ikinci parametresi bugünün
değerini verdiği için bu iki fonksiyon da yarının değerini
döndürmüş olacak. Üçüncü fonksiyonun ikinci parametresine 1
gündeki saniye sayısı da eklendiği için yarının değil öteki
günün değerini döndürmüş olacak.

Strtotime fonksiyonu ile PHP tarihe gün ekleme, hafta ekleme, ay ekleme ve yıl ekleme gibi başka örnekleri aşağıda görebilirsiniz.

echo date('d-m-Y H:i:s').'
';//çıktı (şu anki zaman): 17-02-2018 20:01:10 $zaman1 = strtotime('-1 hour +2 day'); //2 gün ekle ve 1 saat çıkart echo date('d-m-Y H:i:s',$zaman1).'
'; //çıktı: 19-02-2018 19:01:10 $zaman2 = strtotime('-2 week'); //2 hafta önceki zaman echo date('d-m-Y H:i:s',$zaman2).'
'; //çıktı: 03-02-2018 20:01:10 $zaman3 = strtotime('+1 seconds +1 minutes +1 hours +1 day +1 weeks +1 mouths +1 years'); //1 saniye, 1 dakika, 1 saat, 1 gün, 1 hafta, 1 ay, 1 yıl ekle echo date('d-m-Y H:i:s',$zaman3).'
'; //çıktı: 25-02-2019 20:02:11 $zaman4 = strtotime('next friday'); echo date('d-m-Y H:i:s',$zaman4).'
'; //çıktı: 23-02-2018 00:00:00 $zaman5 = strtotime('last friday'); echo date('d-m-Y H:i:s',$zaman5).'
'; //çıktı: 16-02-2018 00:00:00

Strtotime fonksiyonu hakkında ayrıntılı daha fazla bilgi almak için bu sayfaya tıklayabilirsiniz.

microtime() fonksiyonu

Microtime fonksiyonu içerisine parametre olarak girilen unix zaman damgasını mikrosaniyeye çevirip geri döndürür. PHP microtime fonksiyonu kullanımı aşağıdaki gibidir.

echo microtime(time()).'
'; //çıktı: 1518898878.8966

getdate() fonksiyonu

Getdate fonksiyonu içerisine parametre olarak girilen unix zaman damgalı değere karşılık olarak tarih ve zaman bilgilerini dizi olarak döndürür. Parametre olarak değer girilmeden düz kullanılır ise varsayılan olarak fonksiyonun çalıştığı zamanın unix zaman değerini kullanır. Getdate fonksiyonu ile dizi olarak döndürülen anahtarların listesi ve açıklamaları aşağıdaki gibidir.

Anahtar Açıklama Örnek
seconds Saniye 0 ile 59 arası
minutes Dakika 0 ile 59 arası
hours Saat 0 ile 23 arası
mday Ayın günleri

1 ile 31 arası
wday Haftanın günleri

0=Pazar ile 6=cumartesi arası
mon Ay 1 ile 12 arası
year Yıl 2017, 1996
yday Yılın günleri 0 ile 365 arası
weekday Metinsel haftanın günleri Friday, Thursday
month Metinsel ayın günleri February, April
0 Fonksiyon içerisinde işlenen Unix zaman damgası değeri -2147483648 ile 2147483647 arası

PHP getdate fonksiyonu kullanımı ise aşağıdaki gibidir.

print_r(getdate(time()));
/*
	--çıktı--
	Array ( 
		[seconds] => 11 
		[minutes] => 15 
		[hours] => 9 
		[mday] => 18 
		[wday] => 0 
		[mon] => 2 
		[year] => 2018 
		[yday] => 48 
		[weekday] => Sunday 
		[month] => February 
		[0] => 1518945311 
	)
*/

Yukarıdaki örnekte, getdate fonksiyonuna parametre girilmez ise yine aynı sonucu verecekti. Çünkü varsayılan olarak time fonksiyonu çalıştırılmakta.

checkdate() fonksiyonu

Checkdate fonksiyonu ile PHP tarih kontrolü yapılabilmekte. İçerisine parametre olarak girilen ay, gün, yıl değerlerini miladi takvim üzerinden doğrulama işlemini yerine getirir. Geçerli bir tarih girilmesi sonucunda fonksiyon true değeri döndürür, aksi halde false değeri döner. PHP checkdate fonksiyonu kullanımı aşağıdaki gibidir.

$gun = 18;
$ay = 2;
$yil=2018;

$sonuc = checkdate($ay, $gun, $yil);
if ($sonuc){
	echo 'Tarih doğrulama: Geçerli';
}else{
	echo 'Tarih doğrulama: Geçersiz';
}
//çıktı: Tarih doğrulama: Geçerli

Örnek vermek gerekirse, miladi takvim de 2018 yılında şubat 28 çekiyor. Yukarıdaki örnekte ‘gun’ değişkenine 29 değerini belirtirsek bu geçersiz bir tarih anlamına gelir ve fonksiyondan ‘false’ değeri döner.

Yorum Yap
0 Yorum yapan