PHP de Tarih İşlemleri

PHP de Tarih İşlemleri

Hepinize merhaba dostlarım :). Bu yazımda başlıktan da anlaşıldığı üzere php programlama dilinde olmazsa olmaz konulardan birisi olan ve özellikle tarihsel işlemler gerektiren projelerde (örneğin muhasebe yazılımı veya fatura yazılımı vs gibi) kullanılan, ki zaten kullanmamızın elzem olduğu tarihsel işlemler konusuna giriş yapacağız :). Şimdi dostlarım gelelim php programlama dilinde tarihsel işlemlere.

Tarihsel İşlemler Nelerdir ?

Tarihsel işlemlere bakacak olursak dostlarım teorik bir anlatımdan çıkarak sizlere işin mantığından bahsetmek istiyorum. Tarihsel işlemler bizim projelerimizde yıl, ay, gün, tarih, saat, dakika, saniye belirttiğimiz durumlardır. Örnek vermek gerekirse sizin bir muhasebe yazılımınız var diye ele alalım. Bir freelancer yazılımcısınız ve bu muhasebe yazılımında (size özel muhasebe yazılımı olsun) müşterilerinizin ne zaman size iş yaptırdığını, ödeme işleminin ne zaman yapıldığını, fatura tarihi vs vs bir sürü işlemlerin olduğunu düşünün. Bunların hepsinin tarihinin olması ve takip edilmesi ne kadar düzgün olur değil mi :), Veya bir hatırlatıcı yazılımınız olsun varsayalım. O gün geldiğinde size uyarı vermesi mesaj veya mail göndermesi de bir hayli bize yardımcı olur. İşte dostlarım bu ve bunun gibi örnekler birer tarihsel işlemler olarak bilinir :). Sözü biraz fazla uzattım kusuruma bakmayın. Şimdi php programlama dilinde tarihsel işlemler nasıl yapılır gelin onları inceleyelim

date() Fonksiyonu

PHP programlama dilinde dostlarım sıklıkla kullanılan bir fonksiyon olan date fonksiyonu tarihin ekrana bastırılması işlemini ustalıkla yerine getirir. İki parametre alır. Bunlar:

  1. Parametre: Tarih Formatı (GG-AA-YYYY gibi) (zorunlu)
  2. Parametre: Format Uygulanacak Saniye veya Tarih (zorunlu değil) (Boş bırakırsak bugünün tarihini alacaktır)

şeklindedir dostlarım :). İsterseniz gelin sizinle beraber bugünün tarihini ekranımıza bastıralım

<?php
  $bugun = date("Y-m-d");
  echo $bugun;

 // Ekran Çıktısı:  2021-03-12
?>

şeklinde kodumuzu yazdık dostlarım :). Bize bugünün tarihini verdi. Şimdi akıllarda bir soru var. Bu Y m d Nereden Geldi ? Gelin onları da açıklayalım dostlarım. Bu Y m d gibi birkaç tane daha harf kullanmamız gereken zamanlar olacak. Gelin hepsini tek bir tabloda açıklayalım derim

Y4 Basamaklı tarih değerini almamızda yardımcı olur
mAy değerini almamızda yardımcı olur
dGün değerini almamızda yardımcı olur
HSaat değerini almamızda yardımcı olur
iDakika değerini almamızda yardımcı olur
sSaniye değerini almamızda yardımcı olur
l (küçük L)Gün değerinin İngilizce olarak geri döndürmemizde yardımcı olur

şeklinde harfler kullanacağımız zamanlar bize yardımcı olacaktır dostlarım. Şimdi ise dostlarım gelelim bugünün tarihini ve saatini ekranımıza yazdıralım

<?php
  echo date("Y-m-d H:i:s l");

// Ekran Çıktısı:  2021-03-12 10:00:00 Friday
?>

şeklindeki gibi ekranımıza bastıracaktır dostlarım :). Burada Biz tarih formatının Y-m-d şeklinde alınacağını söyledik, Saat formatının  da Saat : Dakika : Saniye cinsinden gelmesini söyledik ve son olarak ekranımızdaki l (Küçük L) ifadesi ile gün değerinin İngilizce olarak gelmesini istedik :). Yalnız dostlarım bu kısımda saat değeri normalden farklı gelebilir. Bu noktada yapmanız gereken düzenleme

<?php
 date_default_timezone_set("Europe/Istanbul");
?>

şeklinde olacaktır dostlarım :). Burada da bizim oluşturacağımız tarih ve saat dilimleri Türkiye ' nin saat dilimi baz alınarak oluşturulsun diye yazılımımıza söylemiş oluyoruz :). date() fonksiyonu anlaşılmış ise dostlarım gelelim şimdi bir diğer fonksiyonumuza

mktime() Fonksiyonu

Geldik artık bir diğer fonksiyonumuz olan mktime() fonksiyonumuza dostlarım :). Bu fonksiyonu tanımlayacak olursak dostlarım bizim bir tarih ve saat oluşturmamızda çok büyük yardım sağlıyor. İsminden de anlaşılacağı üzere mktime() yani make time (Türkçe karşılığı zaman oluşturma) olarak bilinen bu fonksiyon tarih oluşturmamızda bize avantaj sağlıyor. Peki  nasıl kullanılıyor diye soruyorsanız dostlarım zorunlu olarak  6 parametre alıyor. Bunlar:

  1. Saat
  2. Dakika
  3. Saniye
  4. Ay
  5. Gün
  6. Yıl

olarak geçiyor dostlarım :). Yalnız önemli nokta var. mktime() fonksiyonu ile oluşturduğumuz zaman ekranımıza bastırdığımızda direk düzenli bir şekilde gün ay yıl olarka gelmez. Unix time şeklinde ekranımıza gelir. Gelin benim doğum tarihim üzerinden örnek vereyim

<?php

$dogum = mktime(23,33,12,06,06,1999);
echo $dogum;

// Ekran Çıktısı:  928726392
?>

şeklinde ekranımıza bastırılacaktır. Şimdi sizin aklınızda bir soru var "Unix Time Nedir ?" diye. Hemen cevaplayayım o halde

Unix Time: 01.01.1970 ten bu yana olan veya mktime() fonksiyonu içerisinde belirttiğimiz zamana kadar geçen saniyedir :)

Bu kısmı şu an anladınız ama aklınızda bir başka soru belirdi. Bu soru da yanılmıyorsam şu

Tamam biz mktime() fonksiyonu ile tarihi saniye olarak almayı başardık. Peki bunu ekrana nasıl normal bir şekilde yazdırabiliriz ?

Çözüm gayet basit dostlarım. Yukarıdaki açıkladığım date() fonksiyonunun ikinci yani zorunlu olmayan parametresine bu elimize geçen saniyeyi göndererek yapacağız :). Gelin ekran çıktımız olan 928726392 sayısını ekranımıza düzgün bir şekilde yazdıralım

<?php

$dogum = 928726392;
echo date("Y-m-d H:i:s l",$dogum);

// Ekran Çıktısı:  1999-06-06 23:33:12 Sunday
?>

şeklinde ekranımıza basıtrılacaktır dostlarım. Dediğim gibi mktime() fonksiyonuna 6 adet parametre gönderip tarih oluşturuyoruz ama bu tarihin değerini unix time olarak alıyoruz. Daha sonra ise date() fonksiyonumuzun ikinci parametresi olarak bu unix time değerini gönderdiğimiz zaman date() fonksiyonunun birinci parametresinde ayarladığımız zaman formatına göre ekranımıza basılmasını sağlıyoruz :). Bütün işlem bu kadar. Gelelim bir diğer fonksiyonumuza :)

strtotime() Fonksiyonu

Ve geldik zaman işlemlerinde karşımıza çıkan ve oldukça işimize yarayan bir fonksiyon olan strtotime() fonksiyonuna :). Bu fonksiyon ile içerisine belirttiğimiz zaman tarihinin bize unix karşılığını verir. Mesela bugünün tarihini girdik diyelim unix time (1 ocak 1970 den itibaren bu güne kadar geçen saniye) karşılığını verecektir. 1 adet zorunlu parametre alır. parametre ise şudur:

  • Unix Time ifadesine çevrilecek tarih

Gelelim şimdi mfsoftware blog sayfasının kurulma tarihi yani 25.01.2021 tarihini unix time şekline çevirelim

<?php
 echo strtotime("25.01.2021");

// Ekran Çıktısı:  1611550800
?>

şimdi dostlarım işlem nasıl gerçekleştir diye merak ediyorsanız anlatayım. Strtotime fonksiyonumuzun içerisine zorunlu olan parametreyi yazdık. Bu arka planda 1 Ocak 1970 den belirttiğimiz zamana kadar olan saniyeleri topladı. Daha sonra ekranımıza çıktıyı bastırdı :). Kullanımı için sadece tarih mi gireceğiz içerisine diye soruyorsanız tabi ki hayır :). Bazı ingilizce kelimelerle bile (tomorrow, last week, next sunday, month gibi) bu işlemi yapabiliriz. Örnek vermek gerekirse benim 6 hafta sonraki hastane randevumu gelelim beraber ekrana bastıralım

<?php
echo strtotime("+6 Week");

// Ekran Çıktısı:  1619096062
?>

şeklinde ekranımıza bastırıldı dostlarım. Bir önceki güne gitmek için i

<?php
echo strtotime("yesterday");

// Ekran Çıktısı:  1615352400
?>

şeklinde aynı tomorrow nasıl yarın demek ise yesterday yazıp dün e gittik ve tarihi unix time biçimine çevirip ekranımıza bastırmış olduk dostlarım. Gün eklemesi yapalım bu da 4 gün ekleme olarak yazalım

<?php
echo strtotime("+4 days");

// Ekran Çıktısı:   1615813291
?>

şeklinde +4 days olarak bugünün tarihine 4 gün eklemiş bulunmaktayız. Son olarak ay eklemesi yapalım. Mesela şimdiki zamana 3 ay ekleyelim ve doğum ayım olan Haziran ayına gidelim

<?php
echo strtotime("+3 months");

// Ekran Çıktısı:   1623416729
?>

şeklinde bugünün tarihine +3 months diyerek 3 ay eklemiş ve haziran ayına giderek tarihi unix time a çevirmiş bulunmaktayız dostlarım. Kullanımı gayet basit çok zor bir yanı yok


Evet dostlarım bu yazımda sizlere php programlama dilinde tarihsel işlemler nedir, nasıl oluşturulur, unix time nedir, zaman dilimi ayarı nasıl yapılır, tarih unix time şekline nasıl çevrilir bunlardan dilim döndüğünce bahsettim. Umarım faydalı olmuşumdur. Başlarda biraz karmaşık veya zor gelebilir. Bunun için her yazımın altında dediğim gibi "İstikrarlı ve Azimli Çalışmalı Ve Bolca Pratik Yapmalısınız :)". Bu dediğimi hayat felsefeniz yaptığınızız sürece başarı sizin için kaçınılmaz olacaktır :).

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıPHP de Exception Oluşturma ve Kullanma
Sonraki YazıPHP SMTP ile Mail Gönderme
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz