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
%A | Gün isimlerini tam olarak verir | Pazartesi, Salı gibi |
%d | Ayın kaçıncı günü olduğunu verir | 01, 12, 30 gibi |
%D | Ayın kaçıncı günü olduğunu verir | 1, 12, 30 gibi |
%b | Ay isminin kısaltmasını verir. | Oca. gibi |
%B | Ayın tam ismini verir. | Ocak, Şubar gibi |
%Y | Yı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.