MultiServis.Net //PHP El Kitabı

<<= Önceki Sayfa | PHP Ana Sayfa | Sonraki Sayfa =>>

PHP'de tarih ve zaman kavramlarini anlamak, Turkce tarih ciktisi yaratmak Yazar: Serkan Tarih: 01/04/02

Problem : Zaman pulunu (timestamp) sekillendirmek ve ornegin AA/GG/YYYY formatina getirmek isitiyorsunuz.

Cozum: Bir UNIX zaman pulunu sekillendirmek icin PHP icerisindeki en verimli yol date () veya strftime () fonkasiyonlarindan birini kullanmaktir.Her iki fonksiyonda opsiyonel olarak zaman pulunu argument olarak alabilirler.

Ornek:

<?php

/*
* Benim dogdugum gun'e ait zaman pulunu sekillendiriyorum...
*/

$tarih = date ("l F j", 404107200);

/*
* Ayni seyi yapiyorum ama tek fark bu fonksiyon yerel zaman duyarli
* yani o anda gecerli dil Turkce ise tarih Turkce olarak yazdiriliyor...
*/

$tarih1 = strftime ("%A %B %d", 404107200);

?>

date () fonksiyonu ile zaman pulunu sekillendiriken elinizde cok fazla alternatif vardir.Simdi bu alternatiflere goz gezdirelim :

> a "am" veya "pm" formatini gosterir.
> A "AM" veya "PM" formatini gosterir.
> d Gunun degerini iki basamakli olarak gosterir. "01" den "31" e kadar
> D Gunun degerini uc haneli kullanarak gosterir. "Fri" gibi
> F Ayin degerini tam olarak gosterir."January" gbi
> h Saatin degerini 12 saat formatinda gosterir."01" den "12" ye kadar
> H Saatin degerini 24 saat formatinda gosterir."01" den "23" e kadar
> g Saatin degerini 12 saat formatinda sifir kullanmadan gosterir."1" den "12" ye kadar
> G Saatin degerini 24 saat formatinda sifir kulllanmadan gosterir."0" dan "23" e kadar
> i Dakikanin degerini gosterir."00" dan "59" 'a kadar
> j Gunun degerini sifir kullanmadan gosterir."1" den "31" 'e kadar
> l Gunun degerini text olarak gosterir."Friday" gibi,
> L Boolean olarak "artikyil" icin "0" veya "1" degerini alir
> m Ayin degerini gosterir."01" den "12" ye kadar
> n Ayin degerini sifirlar olmadan gosterir."1" den "12" ye kadar
> M Ayin text degerini ilk uc harfini kullanarak gosterir."Jan" "Feb" gibi
> s Saniyenin degerini gosterir."00" dan "59" a kadar
> S Ingilizce tarih icin tanimlanan "th" "nd" gibi kisaltmalari gosterir.
> t Ayin icindeki gun adedini verir."28" den "31" e kadar
> T Server icin Zaman dilimini gosterir."MDT" gibi
> w Gunun degerini sayi olarak gosterir."0" pazardan "6" cumartesiye kadar.
> Y Yilin degerini 4 digit olarak gosterir."1999" gibi
> y Yilin degerini 2 digit olarak gosterir."99" gibi
> z Yil icinde gunun kacinci gunu oldugunu gosterir."0" dan "365"e kadar
> Z Zaman diliminde saniye olarak otelemeyi gosterir.(-43200 den 43200)

Yukarida gorulen secenekleri date () fonksiyonu icinde aralarinda herhangi bir ayrima isareti koyarakda kullanabilirsiniz :

> <?php
> print date ("n/j/Y");
> ?>

Yukarida gorulen kod parcasi ile o andaki tarih "Ay/Gun/Yil" formatinda ekrana yazilacaktir.

Gordugunuz gibi yukaridaki sekilde kullanildiginda o anda gecerli olan tarih ekrana yazdirilmaktadir.Bu durumda zaman pulunu atrgument olarak fonksiyona gecirmenize gerek yoktur.

Zaman Pulu Nedir?

Ocak 1 ,1970 yilindan beri gecen zamanin saniye cinsinden degeridir.Sizin bu zamani saydirmaniz veya tarafinizdan ek bir islemin yapilmasina gerek yoktur.Cogu UNIX zaman pulu zaten bu formatta hazirdir.Tek yapilmasi gereken date () fonksiyonu ile anlamli bir tarihe donusturmektir.

Eger zaman pulunu olusturmak ve 1 Ocak 1970, tarihinden istediginiz bir zamana kadar gecen zamani saniye cinsinden hesaplatmak ve zaman pulunu kendiniz olusturmak istiyorsaniz mktime () komutunu kullaniniz :

> int mktime(int hour, int minute, int second, int month, int day, int year, int [is_dst]);

int :integer yani sayisal veri anlamindadir.

int mktime demek fonksiyondan donen degerin sayisal veri tipinde oldugunu soylemek icindir.

hour : saat

minute : dakika

second : saniye

month : ay

day : gun

year : yil

[is_dst] : Bu surede gecen ve saatlerin ileri-geri alinmasindan (enerji tassarufu icin) dogan farklarin da hesaba katilmasini istiyormusunuz?

strftime () fonksiyonu ile yerel zaman ayarlarina duyarli tarih formati olusturmak

Eger programin icinde setlocale () komutu ile yerel dili belirli bir ulkenin lacak sekilde ayarlarsaniz (ornegin Turkiye icin tr_TR) bu durumda strftime () fonksiyonu o ulkenin tarih formatini kullanacaktir :

> <?php

> setlocale('LC_ALL','tr_TR');

> $tarih = "%A %B %d %Y @ %I:%M%p %Z";

> print strftime ($tarih);

> ?>

Bu kucuk programin ciktisi soyledir :

> Cuma Eylul 07 2001 @ 02:03 OS EDT

(Bilgisayariniza Turkce dil destegi yuklemeniz gereklidir.Bu durumda strftime fonksiyonu kullanildiginda ornegin "friday" yerine turkce olarak "cuma" goruntulenir.Ayni sekilde ay isimleride turkcelesir...)

strftime () fonksiyonu ile kullanabilceginiz secenekleri asagidaki listede topladim.Bu kisim ingilizce ama yukarida date () icin yaptigim ornekten fayddalanarak veya secenekleri tek tek deneyerek nasil calistiklarini gorebilirsiniz :

> · %a - abbreviated weekday name according to the current locale
> · %A - full weekday name according to the current locale
> · %b - abbreviated month name according to the current locale
> · %B - full month name according to the current locale
> · %c - preferred date and time representation for the current locale
> · %C - century number (the year divided by 100 and truncated to an integer, range 00 to 99)
> · %d - day of the month as a decimal number (range 01 to 31)
> · %D - same as %m/%d/%y
> · %e - day of the month as a decimal number, a single digit is preceded by a space (range ' 1' to '31')
> · %h - same as %b
> · %H - hour as a decimal number using a 24-hour clock (range 00 to 23)
> · %I - hour as a decimal number using a 12-hour clock (range 01 to 12)
> · %j - day of the year as a decimal number (range 001 to 366)
> · %m - month as a decimal number (range 01 to 12)
> · %M - minute as a decimal number
> · %n - newline character
> · %p - either `am' or `pm' according to the given time value, or the corresponding strings for the current locale
> · %r - time in a.m. and p.m. notation
> · %R - time in 24 hour notation
> · %S - second as a decimal number
> · %t - tab character
> · %T - current time, equal to %H:%M:%S
> · %u - weekday as a decimal number [1,7], with 1 representing Monday
> · %U - week number of the current year as a decimal number, starting with the first Sunday as the first day of the first week
> · %V - The ISO 8601:1988 week number of the current year as a decimal number, range 01 to 53, where week 1 is the first week that has at least 4 days in the current year, and with Monday as the first day of the week.
> · %W - week number of the current year as a decimal number, starting with the first Monday as the first day of the first week
> · %w - day of the week as a decimal, Sunday being 0
> · %x - preferred date representation for the current locale without the time
> · %X - preferred time representation for the current locale without the date
> · %y - year as a decimal number without a century (range 00 to 99)
> · %Y - year as a decimal number including the century
> · %Z - time zone or name or abbreviation
> · %% - a literal `%' character

Daha fazla bilgi icin bakiniz :

http://www.php.net/manual/en/function.date.php

http://www.php.net/manual/en/function.gmdate.php

http://www.php.net/manual/en/function.mktime.php

http://www.php.net/manual/en/function.setlocale.php

http://www.php.net/manual/en/function.strftime.php

http://www.opengroup.org/onlinepubs/7908799/xsh/strftime.html

Saygilar,

Serkan Hadi Ceylani
serkan@turk-php.com

<<= Önceki Sayfa | PHP Ana Sayfa | Sonraki Sayfa =>>