PHP de tarih ve saat fonksiyonları

Yaptığımız uygulamaların hemen hemen hepsinde zamanla ilgili işlemler yaparız. Bu makalede PHP de tarih ve saat işlemlerinin nasıl yapıldığını göreceğiz.

Unix time

PHP tarih ve saat işlemlerinde unix zaman damgasını (unix timestamp) kullanır. Unix formatı 1 Ocak 1970 00:00:00 tarihinden itibaren geçen saniye sayısını tutan integer(tamsayı) bir değerdir.

time()

Şu anki zaman bilgisini unixtime formatında döndüren fonksiyondur. time() fonksiyonu parametre almaz.

<?php
$suan_unix=time();
echo 'Şuan: '.$suan_unix;

// ÇIKTI
// Şuan: 1479901380
?>

Örnekte makaleyi yazdığım tarihte aldığım sonucu görüyoruz. 

Aldığımız sonuç şu ana kadar geçen saniye sayısını gösteren bir tamsayı olduğu için biz bu saniye değerine ekleme çıkarma yaparak istediğimiz bir zamanın zaman damgasını bulabiliriz. Örneğin bir gün sonranın, 2 gün öncenin zaman damgalarını bulabiliriz.

Örnek: 3 gün öncenin zaman damgasını bulalım. Bunun için (3*24*60*60) formülüyle 3 günde kaç saniye olduğunu buluyoruz ve bulduğumuz değeri şu anın değerinden çıkarıyoruz.

<?php
$suan=time();
$uc_gun_once=$suan-(3*24*60*60);
echo 'Şuan: '.$suan.'<br>';
echo '3 gün önce: '.$uc_gun_once;

// ÇIKTI
// Şuan: 1479894837
// 3 gün önce: 1479635637
?>

date(format, timestamp)

Unix formatındaki bir tarihi istenilen bir formatta göstermeye yarar. 

Parametreler

  • format: Gerekli bir parametredir. Ekranda tarihin nasıl gösterileceğini belirlediğimiz parametredir. Aşağıda ki tabloda bu formatta kullanılan parametreleri görüyoruz.
  • timestamp: Opsiyonel bir parametredir. Unix formatında tarihi yazarız. Eğer boş bırakılırsa default olarak şimdiki zaman değeriyle çalışır.   

Formatta kullanılan parametreler

Format  İşlevi Örnek Sonuç
Gün
d 0 dolgulu gün gösterimi 05, 27...
j 0 dolgusuz gün gösterimi 3, 18...
D Gün isimlerinin 3 haneli metinsel gösterimi Mon, Sun...
l Günlerin tam isimleri (küçük L harfi) Monday, Sunday
w Günlerin sayısal gösterimi 1=pazartesi, 2=salı,...., 7=pazar
N Günlerin sayısal gösterimi 0=pazar, 1=pazartesi, ..., 6=cumartesi
z yılın günleri (0 dan başlar)  0,1. 2,...,365
Hafta
W yılın hafta numarası (hafta başlangıcı pazartesidir) yılın 25. haftası gibi
Ay
F ayın tam adı January, February,...
M ay adının 3 karakterli gösterimi Jan, Feb,...
m 0 dolgulu ay gösterimi 01, 02, ....., 12
n 0 dolgusuz ay gösterimi 1, 2 , ...., 12
t belirtilen ayın toplam gün sayısı 28, ..., 31
Yıl
Y yılın 4 haneli gösterimi 2000, 2016 ...
y yılın 2 haneli gösterimi 00, 16 ...
L Artık yıl ise 1 değilse 0 döndüren boolean değişken 1 veya 0
Saat
A Büyük harflerle öğleden önce veya sonra bilgisi AM, PM
a Küçük harflerle öğleden önce veya sonra bilgisi am, pm
G 24 saatlik 0 dolgusuz saat gösterimi 0, 1, ..., 23
g 12 saatlik 0 dolgusuz saat gösterimi 1, 2, ..., 12 
H 24 saatlik 0 dolgulu saat gösterimi 00, 01, ..., 23
h 12 saatlik 0 dolgulu saat gösterimi 01, 02, ..., 12 
i 0 dolgulu dakika gösterimi 00, ..., 59
s 0 dolgulu saniye gösterimi 00, ..., 59

Sık kullanılan biçimler bu tabloda belirtilmiştir. Daha fazla bilgiyi şuradaki tablodan bulabilirsiniz.

Örnek: 

<?php 
echo date('d/m/Y').'<br>';
echo date('d F Y l',time()+3*24*60*60).'<br>';
echo date('d.m.y H:i:s').'<br>';

// ÇIKTI
// 23/11/2016
// 26 November 2016 Saturday
// 26.11.2016 14:51:47
?>

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

mktime fonksiyonu parametrelerle belirttiğimiz zamanı unix zaman damgasına çevirir. Parametrelerin sıralaması önemlidir. 

Örnek: 29.05.2016 16:39:02 tarihinin mktime fonksiyonu ile unix zaman damgasını buluyoruz.

<?php 
echo mktime(16, 39, 02, 05, 29, 2016);
// 1464529142
?>

strtotime()

İnsanın okuyabileceği formattaki bir stringi unix zaman damgasına çevirir. 

Örnek: 

<?php 
echo(strtotime("now") . "<br>");
echo(strtotime("3 October 2005") . "<br>");
echo(strtotime("06.06.2015") . "<br>");
echo(strtotime("+5 hours") . "<br>");
echo(strtotime("+1 week") . "<br>");
echo(strtotime("next Monday") . "<br>");
echo(strtotime("last Sunday").'<br>');
echo(strtotime("+1 month 1 week 3 days 7 hours,- 5 seconds") . "<br>");
echo(strtotime("+1 month 1 week 3 days 7 hours 5 seconds") . "<br>");

// 1479905915
// 1128286800
// 1433538000
// 1479923915
// 1480510715
// 1480280400
// 1479589200
// 1483387110
// 1483387120
?>

yukarıda now ile şu an ki zaman damgasını yazıyoruz. örneğin +5 hours yazarak şu anki zaman damgasından 5 saat sonrasının zaman damgasını elde ederiz.

ETİKETLER
timedatetarihsaatphpmktimestrtotimezaman damgasıunixtimestampphp tarih saat zaman
Öncekİ Yazı

PHP de mysql veritabanı bağlantısı yapma

Sonrakİ Yazı

jQuery de tanımlı olmayan bir değişkeni kontrol etmek

İlgili Yazılar