PHP Time & Strtotime

Bu yazımda, daha önce şurada bahsetmiş olduğum,  time()  işlemlerini, şimdi gün, hafta, ay ve yıl gibi çevirilerle ifade edeceğim.

Diyelim ki veritabanımızda Bu Günün kayıtlarını, günün başlangıcından, o ana kadar almak istiyoruz…

Bugünün başlangıcını bulmak.

<?php 
$bugun = date('Y-m-d 00:00:00');
$gdate = new DateTime($bugun);
$bugun = $gdate->getTimestamp(); // 1445288078
?>

Yukarıdaki işlem sayesinde bu günkü tarihin ilk başlangıcı değeri alınmış oldu(1445288078). Bu halde eğer veritabanımızda sorgu yapmak isteseydik, demek ki veritabanımızdaki ilgili tarih bulduğumuz değere eşit ve yüksek olan kayıtları çekmemiz gerekecekti. Kısaca veritabanımızdaki alan adı, “db_tarih” olsun, bu halde sorgu kısımı

” WHERE db_tarih>=$bugun”

şeklinde olacaktı.

Peki 1 gün önceki kayıtları getirme isteseydik, bu halde sorgu mantığı, dün satarttan büyük ve eşit, bugün starttan küçük olan kayıtlar olacaktı(between yöntemi de kullanılabilir, ben anlaşılması için büyük, küçük işaretli kullanımına değiniyorum).,

Dün’ün başlangıcını bulmak

$bugun = date('Y-m-d 00:00:00');
$gdate = new DateTime($start);
$bugun = $gdate->getTimestamp(); // 1445288078
$dun  = date( 'Y-m-d 00:00:00', strtotime ( '-1 day' . $start ) );
$gdate = new DateTime($dun);
$dun = $gdate->getTimestamp();

İşte hem dün zaman başlangıç değerini hem de bu günün başlangıç değerini almış olduk. Bu halde sorgu yapacak olsaydık

” WHERE db_tarih>=$dun AND db_tarih<$bugun”

olacaktı. Yukarıda görüldüğü gibi strtotime ve -1 gün kullandık. Hafta, ay ve yıl için ise aşağıdaki gibi kullanabiliriz.

// hafta
$hafta  = date( 'Y-m-d 00:00:00', strtotime ( '-1 week' . $start ) );
$gdate = new DateTime($hafta);
$hafta = $gdate->getTimestamp();

// ay
$ay  = date( 'Y-m-d 00:00:00', strtotime ( '-1 month' . $start ) );
$gdate = new DateTime($ay);
$ay = $gdate->getTimestamp();

// yil
$yil  = date( 'Y-m-d 00:00:00', strtotime ( '-1 year' . $start ) );
$gdate = new DateTime($yil);
$yil = $gdate->getTimestamp();

Önceki yazımdaki yöntemle, gün, dün, hafta, ay ve yıl kullanımına örnek vermiş oldum.

Dilerseniz “-3 day” ile evvel 3 günü “-3 week” ile evvel 3 haftayı ve ay ve yıl içinde yine ” – ” ve rakam belirterek geçmiş herhangi bir ay ve yılı bulabilirsiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir