Navigate / search

Php – Server İle Tarih Saat Farkı’ nı Düzeltme

Server İle Saati Farkı’ nı Düzeltme

Kullandığımız serverdaki saat ile bizim bulunduğumuz ülkedeki saat her zaman aynı olmayabilir. Farklı ülkelerden aldığınız hostinglerin saati kendi yerel saatlerine göre ayarlanmıştır.Buda sizin için bir sıkıntı olabilir.

Fakat Php her zamanki gibi kolaylığını bize gösteriyor.Ve ufak bir fonksiyon ile bu sorunu ortadan kaldırıyor.
İlk önce date ile ekrana Tarih saatimizi yazdıralım.

1
echo date("d-m-Y H:i:s");

ekrana 26-01-2011 15:05:45 yazdı.Ama bu bizim yerel saatimiz değil.Şimdi fonksiyonumuzu uygulayıp date ile tarih ve saati yazdıralım

1
2
putenv("TZ=Europe/Istanbul");
echo date("d-m-Y H:i:s");

Eveeet.Gördüğünüz Gibi Artık Tarih Ve Saatimiz Yerel Saatimiz Olarak Ekrana Geldi.

putenv fonksiyonunu header’ımıza yerleştirdiğimizde bütün problemlerimiz çözülmüş olacak.

mktime() ile Saat Verisini Hafızaya Alma

Saat Verisini Hafızaya Alma.
Saat verisini kaydetmek hafızaya almak veritabanımıza kaydetmek isteyebiliriz.Bunun için mktime() fonksiyonunu kullanacağız.Bu fonksiyonun birçok şekilde kullanımı mevcuttur, biz birkaç değişik şekilde kullanımına bakacağız.Saklamak istediğimiz veriyi bir değişkene atacağız.Bu değişkenide tarihi tekrar görüntülemek için date() fonksiyonunu kullanacağız.

Fonksiyonun kullanım şekli:

$degisken=mktime(saat,dakika,saniye,ay,gun,yil);

Değişkenimizin içine epoch formatında zaman verisini kaydetmiş oluyoruz.Daha sonra bu veriyi anlayabildiğimiz formata çevirip ekrana yazdıralım.

print date("d/m/Y",$degisken);

Print komutu ile $degisken içine kaydettiğimiz zaman verisini date() fonksiyonunu kullarak ekrana yazdırdık.

Şimdi bir örnek yapıp sonucuna bakalım.22 mart 2010 saat 17:51:38 de kayıt olmuş olan bir kullanıcı gibi düşünelim.

1
2
$kayit_zamani=mktime(17,51,38,3,22,2010);
print "Kullanıcı ".date("d.m.Y",$kayit_zamani)." tarihinde saat ".date("H:i:s",$kayit_zamani)." 'de kayit olmuştur.";

mktime ile $kayit_zamani değişkenine istediğimiz zamanı kayıt etmiştik.date fonksiyonun özelliğinden yararlanarak şimdiki zamanı değilde daha önceden değişken içinde sakladığımız zamanı yazdırdık.

Kullanici 22.03.2010 tarihinde saat 17:51:38 'de kayit olmustur.

strftime() ile Türkçe Zaman Verileri

Bir önceki derste date() fonksiyonu ile basit bir şekilde tarih ve saat verilerini kullanabilmiştikAma gün ve ay isimlerinde türkçe problemiyle karşılaştırmıştık.Strftime() fonksiyonu ile gün ve ay isimlerini istediğimiz dilde çekebileceğiz.İstediğimiz dil derken PHP’nin desteklediği dillerde.Peki bu PHP hangi dilde yazdırmak istediğimizi nasıl anlar.PHP’nin hangi dilde yazdırmamızı istediğini kodlarımızın başında bir tanımla yaparak belirtiriz.
Bu tanımla şu Şekildedir;

setlocale(LC_ALL,"turkish");

Böylelikle dilimizi türkçe olarak belirlemiş olduk.Şimdi strftime() fonksiyonumuzun kullanımına geçeceğiz.Ama date() fonksiyonunda kullandığımız parametler burda geçerli olmayacak.Strftime() fonksiyonunu kullanmadan önce bu parametrelerin listesini vereceğim.
Aşağıdaki tabloda verilen listede hem date() hemde strftime() fonksiyonun parametleri yan yana verilmiştir.Karşılaştırırsak bulabiliriz.Ayrıca tablonun en sağında sunucunuzun bulunduğu server işletim sistemine destek verip vermediği yazmaktadır.Listedeki bazı parametreler Windows sunucularda çalışmamaktadır.

strftime() Fonksiyonu için Tarih ve Saat Parametleri

Şimdi strftime() ile hem saat hem gün hem ay hemde yılı yazdıralım.
saniye için %S
dakika için %M
saat için %H
haftanın bulunduğunuz gününün adı %A
ay içindeki bulunduğunuz gün sayısı %d
bulunduğunuz ay adı %B
bulunduğunuz Yıl %Y

Şimdi program içinde bu parametreleri kullanalım.

1
2
3
4
5
setlocale(LC_ALL,"turkish");
 
print "Bugün günlerden ".strftime("%A")."<br>";
print "Saat ".strftime("%H:%M:%S")."<br>";
print "Tarih ".strftime("%d.%B.%Y")."<br>";

Sonuç;

Bugün günlerden Pazartesi
Saat 21:40:44
Tarih 26.Nisan.2010
Strftime() fonksiyonu ile kullanabileceğiniz tüm işlevler aşağıdadır.
Format Açıklama Döndüreceği Değer
Günler
%a Gün adını kısa olarak yazar Paz,Cum
%A Gün adının tamamını verir Pazartesi,Çarşamba
%d 2 haneli olarak günü verir 01 - 31
%e Tek haneli olarak günü verir 1 - 31
%j 3 haneli olarak yılın kaçıncı günü olduğunu verir. 001 - 366
%u Haftanın kaçıncı gününde olduğumuzu verir 1 (Pazartesi)  7(Pazar)
%w Haftanın kaçıncı gününde olduğumuzu verir(0′dan başlar) 0 (Pazartesi)  6(Pazar)
Haftalar
%V 2 Haneli olarak kaçıncı haftada olduğumuzu verir 1 – 53
Aylar
%b Kısa ay adını verir Oca,Şub,Mar
%B Ay adının tamamını verir Ocak,Haziran
%h %b ile aynı görevi yapar Oca,Şub,Mar
%m 2 haneli olarak ay sayısını verir 01 (Ocak) through 12(Aralık)
Yıl
%C Kaçıncı yüzyılda olduğu bilgisi verir 19 for the 20th Century
%g Two digit representation of the year going by ISO-8601:1988 standards (see %V) Örnek: 09 for the week of January 6, 2009
%G The full four-digit version of %g Örnek: 2008 for the week of January 3, 2009
%y Two digit representation of the year Örnek: 09 for 2009, 79for 1979
%Y 4 Haneli yıl sayısı verir. Örnek: 2038
Time
%H 2 Haneli saat sayısı 00 - 23
%k Tek haneli saat sayısı 0 - 23
%I Two digit representation of the hour in 12-hour format 01 through 12
%l (lower-case ‘L’) Hour in 12-hour format, with a space preceding single digits 1 through 12
%M Two digit representation of the minute 00 through 59
%p UPPER-CASE ‘AM’ or ‘PM’ based on the given time Örnek: AM for 00:31, PMfor 22:23
%P lower-case ‘am’ or ‘pm’ based on the given time Örnek: am for 00:31, pmfor 22:23
%r Same as "%I:%M:%S %p" Örnek: 09:34:17 PM for 21:34:17
%R Same as "%H:%M" Örnek: 00:35 for 12:35 AM, 16:44 for 4:44 PM
%S Two digit representation of the second 00 through 59
%T Same as "%H:%M:%S" Örnek: 21:34:17 for 09:34:17 PM
%X Preferred time representation based on locale, without the date Örnek: 03:59:16 or15:59:16
%z The time zone offset. Not implemented as described on Windows. See below for more information. Örnek: -0500 for US Eastern Time
%Z The time zone abbreviation. Not implemented as described on Windows. See below for more information. Örnek: EST for Eastern Time
Saat
%c Gelişmiş saat formatı Örnek: Tue Feb 5 00:45:10 2009 for February 5, 2009 at 12:45:10 AM
%D "%m/%d/%y" işlevinin aynısını tek işlevde yapmamızı sağlar Örnek: 02/05/09 for February 5, 2009
%F "%Y-%m-%d" işlevinin aynısını tek işlevde yapmamızı sağlar Örnek: 2009-02-05 for February 5, 2009
%s Unix Epoch Time timestamp (same as the time() function) Örnek: 305815200 for September 10, 1979 08:40:00 AM
%x Preferred date representation based on locale, without the time Örnek: 02/05/09 for February 5, 2009
Diğer
%n Yeni satır ("\n")
%t Tab boşluğu ("\t")
%% Özel karakter koruması ("%")

Tarih – Saat Fonksiyonları ve Biçimlendirme date()

Php’de tarih saat fonksiyonları.Tarih ve saat verisi alma.Php de zaman verisi nasıl alınır.
Tarih ve saat fonksiyonlarında şu ana kadar işlediğimiz derslerde tam olarak istediğimiz gibi bir tarihi kolay bir şekilde elde edememiştik.Şimdi ise göreceğimiz fonksiyonda parametleri öğrendiğiniz taktirde çok kolay bir şekilde tarih ve saat yazdırmanızı sağlayacak.Ama önce mutlaka aşağıda verdiğim linkteki resmin detaylarını inceleyin mümkünse yazıcıdan çıktı alın ve kod yazarken göz önünde bulundurun.

date() Fonksiyonu için Tarih ve Saat Parametleri

Parametlerleri incelediyseniz sürekli kullanabileceğimiz bir kaç parametre olduğunu göreceksiniz.Yani hepsini ezbere bilmenize gerek yok.Sürekli kullandıklarınız zaten bir süre sonra zihninizde yer edinecektir.Ama diğer parametlerin neler yapabildiğini bilmenizde sakınca yoktur.İlerde bir gün parametre kodunu hatırlayamasanızda “aaa bak şunu yapmak için bir parametre vardı.” diye düşünüp eski dökümanları karıştırabilirsiniz.

Şimdi gelelim fonksiyonumuzun PHP içerisindeki kullanımına geçelim.Kullanacağımız fonksiyon date() fonksiyonudur.Parametleri bildiğiniz zaman kullanımı oldukça basit bir fonksiyondur.

Şimdi date() fonksiyonunu kullanırken hangi parametleri kullanacağımızı seçelim.
Tarih ten başlayım.Tarih için 3 adet parametreye ihtiyacımız vardır.Bunlar gün ay yıl parametreleridir.
Gün: d (İki haneli gün sayısını almak için)
Ay: m (İki haneli ay sayısını almak için)
Yıl: Y (Dört haneli yılsayısını almak için)
Fonksiyonu kullanırken her parametre arasına istediğiniz bir karakter koyabilirsiniz.Örneğin / , .

1
print date("d.m.Y");

Ve sonuç olarak bugünün tarihini bu formatta göreceksiniz.

26.04.2010

yada daha farklı bir şekilde yapabilirsiniz

1
print date("m*d*Y");

Ve sonuç olarak bugünün tarihini bu formatta göreceksiniz.

04*26*2010

Şimdide date() fonksiyonundaki saat verilerini çağırmak isteyelim.Saat parametlerine bir göz atalım ihtiyacımız olanlar nelerdir ¿ Saat dakika saniye. Bunların parametre tablosundaki kodlarını bulalım ve fonksiyonda yerlerine yerleştirelim
Saat: H (24 saatlik dilimde saatimizi göstermek için)
Dakika: i (dakikayı göstermek için)
Saniye: s (saniyeyi göstermek için)

Bu parametreler ile örnek yapalım.

1
print date("H.i.s");

Ve sonuç olarak şu andaki saati bu formatta göreceksiniz.

20.32.47

Birde gün ve ay ismiyle birlikte yazdıralım.
Gün adı için l (Küçük L harfi)
Ay için F harfini kullanacağız.

1
2
print "bugun günlerden : ".date("l")."<br>";
print "aylardan : ".date("F")."<br>";
bugun günlerden : Monday
aylardan : April

evet istediğimizi yaptık ama bir sorunumuz var.Gün ve ay isimleri ingilizce.Bir sonraki dersimizde de strftime fonksiyonu ile yerel dilde yazdırmayı göreceğiz

Php Tarih Ve Saat Verisi Alma

Programımız içinde ister o sıradaki tarih ve saati browser penceresinde göstermek için ister yapılan işlemlerin ne zaman yapıldığını kaydetmek için veya farklı sebeplerden dolayı tarih ve saat verisi almamız gerekbilir.bu veriyi aldığımızda bize gelen tarih ve saat verisi sunucunun o sıradaki tarih ve saat verisi olacaktır.Eğer sunucu destekliyorsa biz zaman verisini kendi bölgemize göre ayarlayabiliriz.Sunucumuzun bu desteğinin olup olmadığını ufak bir kod bloğuyla test edebiliriz.İsterseniz ilk önce bu kod bloğunu görelim.

1
2
3
4
<?php 
setlocale ("LC_TIME", "TR");
print (strftime ("Türkçe bugün günlerden: %A "));
?>

Sonuç olarak Ekrana çıkan “Türkçe bugün günlerden PAZAR ” gibiyse yani bugunu türkçe olarak gösteriyorsa sunucumuzun bu desteği vardır.

Tarih ve Saat verisini almak için getdate() Fonksiyonunu kullanacağız.

1
$saat_tarih = getdate()

getdate() fonksiyonu o andaki tarih ve saat verilerini bir dizi halinde değişkenimize aktaracaktır.
Bu durumda, $saat_tarih dizi değişkeninde sırasıyla şu bilgiler yer alır:
• 32 saniye
• 57 dakika
• 6 saat
• 30 ayın gün sayısı (1-31)
• 0 haftanın gün sayısı (1-7)
• 7 ayın sayısı (1-12)
• 2000 yıl
• 211 yılın kaçıncı günü
• Sunday günün adı
• July ayın adı
• 964929452 Unix sistemlerinde Epoch biçiminde zaman bilgisi