PHP – Tarih ve Saat Formatlama

26 Aralık 2019 tarihinde Emre Can ÖZTAŞ tarafından paylaşıldı.

PHP ile çalışılırken en sık karşılaşılan problemlerden birisi de tarih – saat değerini formatlama işlemidir. Şayet; veri tabanından tarih – saat içeren bir kolon çektiğiniz zaman şu şekilde size bir veri çıktısı gelecektir: 2019-12-19 15:12:19. Bu da zaten ‘Date Stamp’ yani ‘Zaman Damgası’ olarak geçer. Bunun anlamı da; veri tabanlarının belirli bir formatta tarih-saat verilerini saklamasıdır. Böyle bir tarih saat formatı da ülkemizde kullanılmamaktadır. Ülkemizdeki standart format da şu şekildedir: 19.12.2019 15:12:19.

Tarih ve saat değerini formatlamak istiyorsanız; bu işlemi gerçekleştirmek için bir çok farklı yol var. En basiti; aldığınız saat – tarih değerini parçalamak ve bu parçaları kendi istediğiniz formata sokmak. Bu tabi ki en kolay ve en saçma yollardan birisi. Bu yazıda doğru bir şekilde tarih ve saat nasıl formatlanır, bu işlemden bahsetmek istiyorum.

date()

date(), zamanı; tarih – saat şeklinde veren bir fonksiyondur. Şöyle ki; anlık olarak zaman ve tarih değerlerine en kolay ulaşmanızı sağlar.

date('d.m.Y');

Yukarıdaki gibi bir kullanımda; bize, GÜN.AY.YIL şeklinde güncel zamanın çıktısını verir.

date('d.m.Y H:i:s');

Yukarıdaki gibi bir kullanımda ise; GÜN.AY.YIL SAAT:DAKİKA:SANİYE şeklinde güncel zamanın çıktısını verir.

date() fonksiyonunun, parametre değerlerine buradaki adresten ulaşabilirsiniz.

Veri tabanı için, güncel zamanın damgasını oluşturmak için de aşağıdaki gibi bir kullanımı seçebilirsiniz.

date('Y-m-d H:i:s');

strtotime()

srtotime() fonksiyonu, parametre olarak geçilen zaman değerini UNIX zaman damgasına çevirir.

strtotime(date('Y-m-d H:i:s'));

Yukarıdaki bir kullanımda; 1577362234 böyle bir çıktıya ulaştım. Güncel zamanı alıp, UNIX zaman damgasına çevirdim.

Zamanı formatlama işleminde de yine strtotime() fonksiyonunu kullanacağız.

Zaman Formatlama

Yazımızın başında verdiğimiz değeri yeniden ele alalım. Zaman değerimiz; 2019-12-19 15:12:19 şeklindeydi. Şimdi bunu Türkiye’de kullanılan zaman biçimine çevirelim. Bunun için de aşağıdaki gibi bir kullanım işimizi görecektir.

date('d.m.Y H:i:s', strtotime('2019-12-19 15:12:19'));

Yukarıdaki gibi bir kullanım size farklı gelebilir. Kodlarımızda yaptığımız şey şu şekilde; veri tabanından gelen zaman değerini strtotime() fonksiyonu ile UNIX zaman damgasına çevirdik. Daha sonra da UNIX zaman damgası değerini, date() fonksiyonu yardımı ile belirlediğimiz zamana çevirdik.

Yukarıdaki kodlarımızın çıktısı da; 19.12.2019 15:12:19 şeklinde olacaktır.

Kodlarımızı kullanarak çok farklı varyasyonlar elde etmek mümkün.

Örnek 1: Güncel zamanın +1 saniye sonrası;

date('d.m.Y H:i:s', strtotime('+1 second'));

Örnek 2: Güncel zamanın +1 dakika sonrası;

date('d.m.Y H:i:s', strtotime('+1 second'));

Örnek 3: Güncel zamanın +1 saat sonrası;

date('d.m.Y H:i:s', strtotime('+1 hour'));

Örnek 4: Güncel zamanın +1 gün sonrası;

date('d.m.Y H:i:s', strtotime('+1 day'));

Örnek 5: Güncel zamanın +1 hafta sonrası;

date('d.m.Y H:i:s', strtotime('+1 week'));

Örnek 6: Güncel zamanın +1 ay sonrası;

date('d.m.Y H:i:s', strtotime('+1 month'));

Örnek 7: Güncel zamanın +1 yıl sonrası;

date('d.m.Y H:i:s', strtotime('+1 year'));

Örnek 8: Güncel zamanın +1 saniye, +2 dakika, +3 saat, +4 gün, +5 hafta, +6 ay, +7 yıl sonrası;

date('d.m.Y H:i:s', strtotime('+1 second, +2 minute, +3 hour, +4 day, +5 week, +6 month, 7 year'));

Yukarıdaki örneklerimiz de dikkat edeceğiniz 2 şey var; birincisi, güncel zamandan sonrası için + (artı) kullanıyoruz. Şayet güncel zamandan öncesi için kullanacaksak – (eksi) yazmamız gerekir. İkinci dikkat edeceğimiz şey ise; sonrası veya öncesi ile birlikte çeşitli zaman dilimlerini ayırmak için , (virgül) kullanmalıyız.

Son bir örnek daha verelim.

Örnek 8: Güncel zamanın +5 dakika, -10 ay, -2 yıl değeri;

date('d.m.Y H:i:s', strtotime('+5 minute, -10 month, -2 year'));

Yukarıdaki çeşitli örnekleri kullanarak zamanı formatlama işlemini yerine getirebilirsiniz.

Kategoriler: [PHP] Etiketler: #date #PHP #strtotime

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

*
*

This site uses Akismet to reduce spam. Learn how your comment data is processed.