Merhabalar,

Bu yazımızda php ile tarih işlemlerini ve DateTime sınıfını açıklamaya çalışacağım.

Php'de bildiğiniz gibi bir çok şekilde tarih işlemlerini gerçekleştirebilirsiniz en basitinden tarih değerinizi timestamp'a çevirip, üzerinde matematiksel işlemler gerçekleştirdikten sonra tekrar tarih formatına çevirebilirsiniz.

Ben bunun yerine size DateTime sınıfıyla işlemleri gerçekleştirmeyi göstericem.


Öncelikle sınıfın kurulumuna bakalım, DateTime sınıfını kurarken herhangi bir construct'a ihtiyacınız yok. Direk;

<?php
$tarih = new DateTime();


Diyerek tarih sınıfını kurabilirsiniz.

Elinizdeki string şeklindeki tarih'i istediğiniz şekilde formatlayabilirsiniz. Örneğin bugün'ü string şeklinde verip, farklı formatlarda geri isteyelim.

<?php
$tarih = new DateTime("22-December-2012 17:30:12");
echo $tarih->format("l, F jS, Y");
//Çıktısı: Saturday, December 22th, 2012 olacaktır
echo $tarih->format("d.m.Y");
//Çıktısı: 22.12.2012 olacaktır


Gördüğünüz gibi string şeklinde vermiş olduğumuz tarihi, istediğimiz tarih formatında geri aldık.

Şimdi ise Birkaç tarih işlemi yapalım. Örneğin önümüzdeki Pazar'ın hangi tarihe denk geldiğini bulmak istiyoruz.

<?php
$date = new DateTime("next Sunday");
echo $date->format("d");
//Çıktısı: 23 olacaktır.


Şimdi de elimizdeki tarihe gün, ay, yıl ekleyelim, çıkartalım;

<?php
$tarih = new DateTime("22 December 2012 17:30:12");
$tarih->modify("-1 month");
echo $tarih->format('Y-m-d');
//1 ay Çıkarttık Çıktısı: 2012-11-22
$tarih = new DateTime("22 December 2012 17:30:12");
$tarih->modify("+1 Year");
echo $tarih->format('Y-m-d');
//1 yıl Ekledik Çıktısı: 2013-12-22
$tarih = new DateTime("22 December 2012 17:30:12");
$tarih->modify("-1 Day");
echo $tarih->format('Y-m-d');
//1 Gün çıkarttık Çıktısı: 2012-12-21
?>


Bu tek yöntem değil tabii ki php 5.3'den sonra DateInterval eklenmiş durumda, işlemleri bu sınıf yardımıyla da gerçekleştirebiliriz.

Örneğin;

<?php
$tarih = new DateTime("22 December 2012 17:30:12");
$tarih->add(new DateInterval('P10D'));
echo $tarih->format('Y-m-d');
//10 Gün ekledik Çıktısı: 2013-01-01
//Veya
$tarih = date_create('22 December 2012 17:30:12');
date_add($tarih, date_interval_create_from_date_string('3 days'));
echo $tarih->format('Y-m-d');
//3 gün ekledik çıktısı: 2012-12-25
?>


Aklınıza takılan bilgi olursa, başlık altından sorabileceğiniz gibi php'nin DateTime, DateInterval sınıflarını da inceleyebilirsiniz.