Merhaba arkadaşlar bu yazımda PHP ile Yerel Zamanı Ayarlamak başlıklı konumdan bahsedeceğim. Yerel Zamanı Ayarlamaktan kastım şu eğer date() fonksiyonunu kullanıyorken farketteyseniz Gün, Ay isimlerini İngilizce yazdığını farkederseniz. İşte bunları Yerel Zamanımızı bulunduğumuz ülkeye göre ayarlayıp Türkçeye nasıl çevireceğimizden bahsedeceğim.

Bu yazımda bahsedeceğim fonksiyonlardan ilki setlocale() fonksiyonu

setlocale() Fonksiyonu

setlocale(), kesin olarak 2 parametre ve isteğe bağlı olarak 3 parametre alan bir fonksiyondur. Bunlardan ilki hangi işlem için Yerel Zaman ayarlaması yapacağımızı belirtiyor. Bizim tarih ayarlarımız için kullanacağımız için parametre LC_TIME olacak. İkinci parametre ise hangi Yerel Zamana göre ayarlamak istiyorsak o Yerel Zamanın string halini yazıyoruz Türkiye için “tr_TR” string ifadesi yeterli olacaktır. Şimdi setlocale() fonksiyonunu kullanarak bugünün tarihini Türkçe yazmaya çalışalım

<?php 

setlocale(LC_TIME, "tr_TR");

$date = getdate();

print_r($date);

?>

bu kodları çalıştırırsanız geri dönen dizide hala İngilizce Gün ve Ayların yazdığını görebilirsiniz.

şeklinde bir geri dönüşü olmuştur yazdığımız kodun aslında yanlış bir şey yapmıyorsunuz sadece setlocale() ile bir Yerel Zaman belirlediysek artık strftime() fonksiyonu ile tarihi ekrana yazdırmamız gerekiyor. setlocale() fonksiyonu hakkında detaylı bilgi almak için tıklayınız. Şimdi strftime fonksiyonundan bahsetmeye başlayalım.

strftime() Fonksiyonu

strftime() fonksiyonu date() fonksiyonu ile aynı parametreleri alır yani ilk parametresi biçim ve ikinci parametre ise zaman damgasıdır yani UNIX Zamandır ama sadece setlocale() fonksiyonu ile Yerel Zaman değiştirilirse date() fonksiyonundan farklı sonuçlar vermeye başlar bize ve ayrıca biçim kısımlarında yazdığımız d M Y gibi ifadeler biraz daha farklıdır. Bu ifadelerden bir kaç örnek vermek gerekirse

%AGün isimlerini tam olarak verirPazartesi, Salı gibi
%dAyın kaçıncı günü olduğunu verir01, 12, 30 gibi
%DAyın kaçıncı günü olduğunu verir1, 12, 30 gibi
%bAy isminin kısaltmasını verir.Oca. gibi
%BAyın tam ismini verir.Ocak, Şubar gibi
%YYılın 4 haneli halini verir.2019, 2018, 1990 gibi

şeklindedir bunlar hakkında detaylı bilgi almak için tıklayınız.

Bu yaptıklarımız aslında hala bize tam olarak doğru zamanı vermiyor olabilir. Yerel Zamanımızı Türkiye olarak tanımlamış olsak bile saatlerimiz hala farklı olabilir ekranımıza saatimizi yazdılarım.

<?php 
setlocale(LC_TIME, 'tr_TR');
strftime("%T");
?>

Bu yazıyı yazarken saat 14:23 olsa bile bana ekranda 3 saat öncesi olan 11:23 saatini döndürüyor. Yani arka planda hala birşeyler yanlış o zaman yapmamız gereken şey Yerel Saatimizi de değiştirmek fakat öncelikle nasıl tanımlanmış Yerel Saatimizin hangi ülkeye göre olduğunu öğrenelim.

<?php 
echo date_default_timezone_get();
?>

fonksiyonu ile Yerel Saatimizin hangi ülkeye göre ayarlanmış olduğunu öğrenebiliriz. Bu Yerel Saati değiştirmek için ise

date_default_timezone_set() fonksiyonunu kullanmamız gerekiyor.

<?php
setlocale(LC_TIME, 'tr_TR'); 
date_default_timezone_set("Europe/Istanbul");
echo strftime("%T");
?>

şeklinde yazarsak saatimizinde belirttiğimiz ülkedeki bu örnekte Türkiye saatine göre ayarlandığını görebilirsiniz.

Özet,

Bu yazımda sizlere PHP ile Yerel Zaman Ayarlamak adlı konuyu detaylı bir şekilde anlattım. setlocale(), strftime(), date_default_timezone_get ve date_default_timezone_set fonksiyonları nasıl kullanılır. strftime() fonksiyonunda değişken biçimlerin neler olduğundan bahsettim.

Bir sonraki yazımda sizlere PHP Date Sınıfı konusundan bahsedeceğim. O zamana kadar PHP hakkında yazmış olduğum diğer yazılarımı merak ediyorsanız buraya tıklayabilirsiniz.