PHP'nin en sevdiğim yönledinden biri de tarih fonksiyonudur. Tarihi istediğiniz formattan istediğiniz formata çok kolay bir şekilde dönüştürebilirsiniz. İstediğiniz formatta çıktı alabilirsiniz.
Öncelikle date() fonksiyonunu tanıyalım. tarih çağırırken date() fonksiyonu ile çağırırız. içine alacağı parametreleri verdiğimizde işlem tamam oluyor. 23/01/2022 gibi bir tarih çıktısı almak istiyorsak date("d/m/Y") olarak yazmamız yeterli.
Şimdi date içine alacağı parametrelerden bahsedelim.
Parametre | Açıklaması |
a | Küçük harf am-pm değerini verir |
A | Büyük harf AM-PM değerini verir. |
c | ISO-8601 formatında tam tarihi verir (ör. 2022-01-23T16:34:42+03:00) gibi. |
d | Ayın günü iki haneli verir 01-31 arası |
D | Gün ismini 3 harfli verir (İngilizce) |
e | Saat dilimi tanımlayıcısını verir (UTC, GMT gibi) |
F | Ayın tam ismini metinsel olarak verir (İngilizce) |
g | Saati 12 'lik formatta verir 1-12 arası |
G | Saati 24'lük formatta verir 0-23 arası |
h | Saati iki haneli 12'lik formatta verir 01-12 arası |
H | Saati iki haneli 24'lü formatta verir 00-23 arası |
I (büyük ı) | Tarihin yaz saati uygulaması olup olmadığını belirtir. Varsa 1 yoksa 0 değerini verir. |
i | Başında sıfır olarak dakikayı verir 00-59 arası |
j | Ayın günü başında sıfır olmadan numerik olarak verir 1-31 arası |
L | Atık yıl olup olmadığını verir, atık yıl varsa 1 yoksa 0 değerini verir |
l (küçük L) | Tam gün ismini verir (ingilizce) |
m | Ayın sayısal gösterimini verir 2 haneli olarak 01-12 arası |
M | Ayın 3 harfli ismini verir (İngilizce) |
N | Günün rakamsal değerini verir. Pazartesi:1 … Pazar:7 |
n | Başında sıfır olmadan ayın sayısal ifadesini verir 1-12 arası |
o | ISO-8601 yıl numarasını verir. |
O | Greenwich saatine göre farkı verir +0300 gibi |
r | gün ay isimli tarih değeri döner: Sun, 23 Jan 2022 22:28:45 +0300 (İngilizce) |
s | Başında sıfır olarak saniyeyi verir 00-59 arası |
t | Aydaki gün sayısını verir |
U | Unix döneminden bu yana geçen saniyeyi verir 1 Ocak 1970'den sonra |
w | Günün rakamsal değerini verir. Pazartesi:0 … Pazar:6 |
W | Haftanın günlerini metinsel verir |
Y | Yılın dört basamaklı sayısal ifadesini verir. |
y | Yılın son iki hanesini verir. |
z | Yılın gününü verir 0-365 arası (sıfırdan başlamasına dikkat edin) |
Şimdi birkaç örnekle gösterelim:
// önce Türkiye saatini baz alması için lokasyonumuzu ekliyoruz.
date_default_timezone_set('Europe/Istanbul');
// aşağıdaki işlemler o andaki tarihin değerlerini verir.
//Bizim tarihimiz: 23/01/2022 çıktılar da ona göre oluyor.
// Daha ilerde farklı işlemler de yapacağız.
// Bugün tarihi
echo date("d/m/Y") ."n"; // 23/01/2022
// Saatli Tarih için:
echo date("d/m/Y H:i:s")."n"; // 23/01/2022 22:35:11
// int cinsinden Saat
echo date("Ymd")."n"; // 20220123
// Haftanın gün sayısı sıfırdan başlayarak:
echo date("w"); // 0 (Pazar için)
Not: Bazı alanlarda (İngilizce) yazdım. Bu alanlar sunucunuzda Türkçe dil desteği varsa Türkçe olur. Fakat tavsiye etmiyorum. İngilizce kullanın, sonra fonksiyonla Türkçe yaparsınız. Çünkü uygulamanızı farklı bir ortamda çalıştırdığınızda siz Türkçe diye düşündüğünüz gün isimleri, ay isimleri İngilizce olur tekrar uğraşısrınız.
date() Fonksiyonu kullanarak farklı bir tarihle işlem yapmak.
Eğer date() fonksiyonu tek parametre ile çalışıyorsa o anki tarihle ilgili işlem yaparsınız. Farklı bir tarihle işlem yapmak için 2. bir parametreye ihtiyaç duyar.
date(tarih_biçimi,istenilen_tarih) şeklinde tanımlama yapılır. tarih_biçimi: buraya yukarıda belirttiğimiz karakterleri tırnak içinde yazabilirsiniz. En sevdiğim kısmı burası tırnak içinde istediğiniz gibi kullanabilirsiniz. örnek: date("d m Y H i s") veya date("d/m/Y ") veya date("c")
Burada strtotime() fonksiyonunu da anlatmak lazım. strtotime() fonksiyonu stringten tarihe dönüştürme görevini yapar. Örneklerde daha iyi anlaşılacak. Şöyle düşünün bir tarihiniz var ona 3 yıl 2 ay ekleyip 5 gün 3 saat çıkaracaksınız. Bunu aynen yazıyorsunuz PHP bunu tarihe strtotime() fonksiyonu ile çevirip istediğiniz tarihi size veriyor. Tabi İngilizce yazacaksınız :).
Örnekler:
// önce Türkiye saatini baz alması için lokasyonumuzu ekliyoruz.
date_default_timezone_set('Europe/Istanbul');
// örnek alacağımız tarih
$tarih = "2022/01/01 22:15:00";
// şimdiki tarihin Pazartesi günü tarihi
echo date("d/m/Y",strtotime("this Monday")) ."n"; // 24/01/2022
// Belirtili tarihin haftasının Pazar günkü tarihini bulalım
echo date("d/m/Y", strtotime("Sunday", strtotime($tarih)))."n"; // 02/01/2022
// Belirtilen tarihe 20 gün ekleyelim
echo date("d/m/Y",strtotime($tarih . ' +20 days'))."n"; // 21/01/2022
// Belirli tarihe 2 yıl 4 ay ekleyelim 10 gün çıkaralım
echo date('d/m/Y', strtotime('+2 years +4 months -10 days'))."n"; // 13/05/2024
strtotime() Fonksiyonu içine metinsel ifade yazarak tarih alıyoruz.
Çok faydalı.