Php ile Tarih Format ve Çıktıları

By | 3 November 2016

Programlamada en çok uğraştıran işlerden biri de tarihlerle işlem yapmaktır. Aylar, seneler, günler birbirini tutmaz ve her zaman değişkendir. Bu yazımda Php ile tarihlerle işlem yaparken işinize yarayacağını düşündüğüm bir sınıf yazdım. Aşağıdaki kod örnekleriyle anlatmaya çalıştım. Kodları datehelper.php dosyasına kaydediyorum.

<?php
class DateHelper{

  //bu tarihlerin başlangıç ve bitiş tarihlerini alacağız.
  private $formats = array(
  'today' => 'today',
  'yesterday' => 'yesterday',
  'last7' => '7 days ago',
  'thisMonth' => '',
  'lastMonth' => '',
  'last30' => '30 days ago',
  'lastYear' => '',
  'thisYear' => ''
  );

  //burada tip olarak hangi iki tarih arasını istediğimizi göndereceğiz.
  public function getDate($type){
    //formats arrayi içinde eğer istediğimiz tip varsa onun key'ini dönüyor, yoksa false dönüyor.
    $isValidKey = array_key_exists($type, $this->formats);
    if ($isValidKey === false)
      return false;
    $date = [];
    $startDate = '';
    $endDate = '';
    if ($formatKey == 'today') {
      $startDate = $this->getDateTimeByType($formats[$type]);    //output: 2016-11-03
      $endDate = $startDate;
    } elseif ($type == 'yesterday') {
      $startDate = $this->getDateTimeByType($formats[$type]);    //output: 2016-11-02
      $endDate = $startDate;
    } elseif ($type == 'last7') {
      $startDate = $this->getDateTimeByType($formats[$type]);   //output: 2016-10-28
      $endDate = $this->getDateTimeByType('yesterday');   //output: 2016-11-03
    } elseif ($type == 'thisMonth') {
      $startDate = $this->getDateTimeByType('first day of this month');   //output: 2016-11-01
      $endDate = $this->getDateTimeByType('today');   //output: 2016-11-03
    } elseif ($type == 'lastMonth') {
      $startDate = $this->getDateTimeByType('first day of last month');   //output: 2016-10-01
      $endDate = $this->getDateTimeByType('last day of last month');    //output: 2016-10-31
    } elseif ($type == 'last30') {
      $startDate = $this->getDateTimeByType('30 days ago');   //output: 2016-10-05
      $endDate = $this->getDateTimeByType('today');   //output: 2016-11-03
    } elseif ($type == 'lastYear') {
      $startDate = $this->getDateTimeByType(date('Y-01-01'), strtotime("-1 year"));   //output: 2015-01-01
      $endDate = date("Y-12-t", strtotime(date('Y-01-01'), strtotime('-1 year')));   //output: 2015-12-13
    } elseif ($type == 'thisYear') {
      $startDate = $this->getDateTimeByType(date('Y-01-01'));  //output: 2016-01-01
      $endDate = $this->getDateTimeByType('today'); output: //output: 2016-11-03</pre>
    }
    $date['startDate'] = $startDate->format('Y-m-d');
    $date['endDate'] = $endDate->format('Y-m-d');
    return $date;
  }

  function getDateTimeByType($typeValue)
  {
    return new \DateTime($typeValue);
  }
}

Date sınıfımız bu kadar. Şimdi de bunu çalıştıracak Php kodlarımızı yazalım.

<?php
require_once('datehelper.php');

$dateHelper = new DateHelper();
$yesterdayDate = $dateHelper->getDate('yesterday');
echo $yesterdayDate['startDate'] . ' / ' . $yesterdayDate['endDate'];   //output: 2016-11-02 / 2016-11-02;

$lastYearDate = $dateHelper->getDate('thisYear');
echo $lastYearDate['startDate'] . ' / ' . $lastYearDate['endDate'];   //output: 2015-01-01 / 2015-12-31;

?>

Bu kodları da init.php olarak kaydedelim ve çalıştıralım. İstediğimiz formatta tarihlerin çıktısını görebiliriz. Bu iki dosyanın tarih işlemleriyle bir fikir vermesi açısından inceleyebilirsiniz. Tarih işlemleri, programlama dillerinde her gelen yeni tarih güncellemeriyle kolaylaştırılmaya çalışılıyor. Anlatacaklarım şimdilik bu kadar, bir dahaki yazımda görüşmek üzere… 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

*