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:
- Parametre: Tarih Formatı (GG-AA-YYYY gibi) (zorunlu)
- 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
Y | 4 Basamaklı tarih değerini almamızda yardımcı olur |
m | Ay değerini almamızda yardımcı olur |
d | Gün değerini almamızda yardımcı olur |
H | Saat değerini almamızda yardımcı olur |
i | Dakika değerini almamızda yardımcı olur |
s | Saniye 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:
- Saat
- Dakika
- Saniye
- Ay
- Gün
- 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 :)
Yazar Hakkında
Kendi Halinde Bir Backend Developer