Kategoriler
PHP

PHP’de Zaman (Tarih ve Saat) İşlemleri

PHP’de zaman (tarih ve saat) işlevleri nelerdir? PHP’de zaman fonksiyonları nasıl kullanılır?

PHP, tarih ve saat işlemleri için gelişmiş çeşitli yapılara ve fonksiyonlara sahiptir. PHP gerek insanlar tarafından kolayca okunabilen tarih ve saat değerleri, gerekse zaman damgası değerleri ile çalışabilir. Zaman damgası; 1 Ocak 1970 tarihinden başlayarak geçen saniye cinsinden bir tam sayıdır.

time()

PHP’de mevcut zaman damgasını öğrenmek için time() fonksiyonu kullanılır.

echo time();

çıktısı;

1632915386

gibi bir tam sayıdır. Bu tam sayı 1 Ocak 1970’den kod çalıştırılana kadar zamanda geçen saniyedir. Buna Unix zaman damgası da denir.


date()

PHP’de tarih ve saat bilgilerini öğrenmek ya da biçimlendirmek için kullanılan ön tanımlı sabit karakterleri bulunur. Bunları aşağıdaki tabloda görebilirsiniz. Bu ifade karakterleri date() fonksiyonu ile birlikte kullanılır.

İFADEAçıklamaÖrnek
YYılın dört haneli sayısal değerini ifade eder.2000, 2018, 2021, …
oISO-8601 standartlarına uygun olacak şekilde yılın dört haneli sayısal değerini ifade eder.2000, 2018, 2021, …
yYılın iki haneli sayısal değerini ifade eder.00, 18, 21, …
nAyın sayısal değerini ifade eder.1, 2, …, 12
mAyın 0 dolgulu 2 haneli sayısal değerini ifade eder.01, 02, …, 12
FAyın tam adını (İngilizce) ifade eder.January, …, December
MAyın kısa adını (İngilizce) ifade eder.Jan, …, Dec
tAyın toplam gün sayısı bilgisini ifade eder.28, 29, 30 ve ya 31
jGünün sayısal değerini ifade eder.1, 2, …, 31
dGünün 0 dolgulu 2 haneli sayısal değerini ifade eder.01, 02, …, 31
l(Küçük L) Günün tam adını (İngilizce) ifade eder.Sunday, …, Saturday
DGünün 3 haneli kısa adını (İngilizce) ifade eder.Mon, …, Sun
SGünün sayısal değeri için iki karakterli (İngilizce) sıralama takısı değerini ifade eder . (j ile uyumlu çalışır.)st, nd, rd veya th
G24 saatlik sistemde saat değerini ifade eder.0, 1, …, 23
H24 saatlik sistemde saat değerini 0 dolgulu 2 karakterli olarak ifade eder.00, 01, …, 23
g12 saatlik sistemde saat değerini ifade eder.1, 2, …, 12
h12 saatlik sistemde saat değerini 0 dolgulu 2 karakterli olarak ifade eder.01, 02, …, 12
a12 saatlik sistem için iki küçük karakterli “am” (öğleden önce), “pm” (öğleden sonra) değerini ifade eder.am veya pm
A12 saatlik sistemi için iki büyük karakterli “AM” (öğleden önce), “PM” (öğleden sonra) değerini ifade eder.AM veya PM
iDakika bilgisinin 0 dolgulu 2 haneli değerini ifade eder.00, 01, …, 59
sSaniye bilgisinin 0 dolgulu 2 haneli değerini ifade eder. 00, 01, …, 59
WISO-8601 standartlarına uygun yılın kaçıncı haftası olduğu bilgisini ifade eder.
Hafta başlangıcı Pazartesidir.
1, 2, …, 52
zYılın kaçıncı günü olduğu bilgisini ifade eder.
0’dan (1 Ocak) 365’e (31 Aralık) kadar. (366 artık gün)
0, 1, …, 365
wHaftanın kaçıncı günü olduğu bilgisini ifade eder.
0’dan (Pazar) 6’ya (Cumartesi) kadar.
0, 1, …, 6
NISO-8601 standartlarına uygun haftanın kaçıncı günü olduğu bilgisini ifade eder.
1’den (Pazartesi) 7’ye (Pazar) kadar.
1, 2, …, 7
LYılın artık bir yıl olup olmadığı bilgisinin değerini ifade eder.
1 ise artık yıl, 0 ise artık yıl değildir.
0 veya 1
I(Büyük ı) Yaz saati uygulamasının olup olmadığı bilgisinin değerini ifade eder.
0 ise yaz saati uygulaması yoktur. 1 ise yaz saati uygulaması vardır.
0 veya 1
eKullanılan geçerli zaman dilimi bilgisini ifade eder.Europe/Istanbul, …
TKullanılan geçerli zaman dilimi kısaltması değerini ifade eder.
(Türkiye için Central European Summer Time yani CEST’dir.)
EST, CEST, EET
OGMT (Greenwich Mean Time) zaman farkı değerini ifade eder.+0200, …
PGMT (Greenwich Mean Time) zaman farkı değerini saat ve dakika olarak ifade eder.+02:00, …
cISO-8601 standartlarına uygun zaman bilgisini ifade eder.2021-09-29T13:34:47+02:00
rRFC 2822 standartlarına uygun zaman bilgisini ifade eder.Wed, 29 Sep 2021 13:35:35 +0200
UGeçerli zamanın Unix zaman damgası bilgisini ifade eder.…, 1632915386, …

Tablodaki ifadeleri hemen ezberlemeye çalışmayın zaman içinde kullandıkça zaten öğreneceksiniz.

Not : date() fonksiyonu ikinci parametre olarak belirtilen zaman damgası için yukarıdaki tabloda belirtilen ifadeleri kullanarak biçimlendirme yapar. İkinci parametre verilmezse, çalışma zamanının zaman damgasını kullanır.

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

yukarıdaki date() fonksiyonu kullanım örneğinde kullanılan d, Y gibi karakterlerin yukarıdaki tablodan neyi ifade ettiğini görebilirsiniz.
Bu kullanımda ikinci parametre olarak bir zaman damgası bilgisi vermediğimiz için çalışma zamanını belirttiğimiz formatta verecektir. Çıktısı şuna benzer;

29/09/2021 16:18:14

Eğer belli bir zaman damgası için date() fonksiyonunu kullanmak isteseydik, ikinci parametre olarak zaman damgasını bir tam sayı şeklinde belirtmemiz gerekirdi.

echo date("d/m/Y H:i:s", 1632835287);

çıktısı

28/09/2021 15:21:27

şeklindedir.


checkdate()

Bir tarihi Gregoryen (Miladi) Takvime göre doğrulamak için kullanılır. Tarih doğruya true, yanlışsa false döndürür.

Üç parametre alır;
1. Ay
2. Gün
3. Yıl

if(checkdate(2, 30, 2021)){
    echo "Tarih bilgisi doğrudur.";
}else{
    echo "Takvimde böyle bir tarih hiç var olmadı ve olmayacaktır.";
}

Yukarıdaki kullanımda 30 Şubat 2021 tarihini doğrulamaya çalıştığımız için çıktısı;

Takvimde böyle bir tarih hiç var olmadı ve olmayacaktır.

şeklinde olacaktır.


strftime()

PHP’de tarih ve saat biçimlendirme işlemleri için strftime() fonksiyonu kullanılır.

Not : strftime() fonksiyonunu kullanışlı yapan özelliği setlocale() ve iconv() fonksiyonları ile yerelleştirme yapılabilmesidir. Böylece ekstra fonksiyon yazmaya gerek kalmadan, Gün ve Ay isimleri gibi değerleri Türkçe olarak alabiliyoruz.

strftime() fonksiyonunda kullanılabilir ifade ve tanımlar ise aşağıdaki tablodaki gibidir.

İFADEAçıklamaÖrnek
%CYüzyıl bilgisinin iki haneli sayısal değerini ifade eder.20, 21, …
%GYıl bilgisinin dört haneli sayısal değerini ifade eder.2000, …, 2021, …
%YISO-8601 standartlarına uygun olarak yıl bilgisinin dört haneli sayısal değerini ifade eder.2000, …, 2021, …
%gYıl bilgisinin iki haneli sayısal değerini ifade eder.00, …, 21, …
%yISO-8601 standartlarına uygun olarak yıl bilgisinin iki haneli sayısal değerini ifade eder.00, …, 21, …
%mAy bilgisinin iki haneli (0 dolgulu) sayısal değerini ifade eder.01, 02, …, 12
%BAy bilgisinin tam adını ifade eder.January, …, December
%bAy bilgisinin kısa adını ifade eder. (%h ile aynı işi yapar) Jan, …, Dec
%hAy bilgisinin kısa adını ifade eder. (%b ile aynı işi yapar)Jan, …, Dec
%dGün bilgisinin iki haneli (0 dolgulu) sayısal değerini ifade eder.01, 02, …, 31
%eGün bilgisinin sayısal değerini ifade eder.1, 2, …, 31
%AGün bilgisinin tam adını ifade eder.Sunday, …, Saturday
%aGün bilgisinin kısa adını ifade eder.Sun, …, Sat
%H24 saatlik sistemde iki haneli (0 dolgulu) saatin sayısal değerini ifade eder.00, 01, …, 23
%I(Büyük ı) 12 saatlik sistemde iki haneli (0 dolgulu) saatin sayısal değerini ifade eder.01, 02, …, 12
%p12 saatlik sistemde iki karakterli AM (öğleden önce) ya da PM (öğleden sonra) bilgisini ifade eder.AM ya da PM
%MDakikanın iki haneli (0 dolgulu) sayısal değerini ifade eder.00, 01, …, 59
%SSaniyenin iki haneli (0 dolgulu) sayısal değerini ifade eder.00, 01, …, 59
%r12 saatlik sistemde değerler iki haneli (0 dolgulu) olacak şekilde saat, dakika, saniye ve zaman bilgisi takılı bir yapıyı ifade eder.03:34:42 PM
%UYılın kaçıncı haftası olduğu bilgisini 0 dan başlayan ifade eder.
(0’ıncı 1’inci hafta, 51’inci 52’nci haftadır)
(Hafta başlangıcı Pazar)
0, 1, …, 51
%W Yılın kaçıncı haftası olduğu bilgisini 0 dan başlayan ifade eder.
(0’ıncı 1’inci hafta, 51’inci 52’nci haftadır)
(Hafta başlangıcı Pazartesi)
0, 1, …, 51
%VYılın kaçıncı haftası olduğu bilgisini ISO-8601 standartlarına uygun ifade eder.1, 2, …, 52
%jYılın kaçıncı günü olduğu bilgisini sayısal değerini ifade eder.1, 2, …, 366
%wHaftanın kaçıncı günü olduğu bilgisinin sayısal değerini ifade eder.
(0 Pazar, 6 Cumartesi)
0, 1, …, 6
%uHaftanın kaçıncı günü olduğu bilgisinin ISO-8601 standartlarına uygun sayısal değerini ifade eder.
(1 Pazartesi, 7 Pazar)
1, 2, …, 7
%cTam tarih ve saat bilgisini ifade eder.Wed Sep 29 15:57:09 2021
%DAy, Gün ve Yıl (MM/DD/YY) sıralamasını esas alan tarih bilgisini ifade eder.09/29/2021
%x Ay, Gün ve Yıl (MM/DD/YY) sıralamasını esas alan tarih bilgisini ifade eder. 09/29/2021
%FYıl, Ay ve Gün (YYYY-MM-DD) sıralamasını esas alan tarih bilgisini ifade eder.2021-09-29
%TTam saat bilgisini ifade eder.16:02:56
%XTam saat bilgisini ifade eder.16:02:56
%RSaat ve dakika bilgisini ifade eder.16:02
%ZGeçerli zaman dilimi değerini ifade eder.Türkiye Yaz Saati
%nYeni satır karakteri değerini ifade eder.\n
%tTAB (sekme) karakteri değerini ifade eder.\t
%%Yüzde karakterini ifade eder.%
$tarih = strftime("%d %B %G %A");
echo $tarih;

yukarıdaki örnek

22 October 2021 Friday

benzeri bir çıktı üretir.

strftime() işlevine ikinci parametre olarak Unix zaman damgası verilerek istenilen zaman için biçimlendirme işlemi yapılabilir.

$tarih = strftime("%d %B %G %A", 1634804531);
echo $tarih;

yukarıdaki örneğin çıktısı:

21 October 2021 Thursday

şeklindedir.


strtotime()

Metinsel bir tarih ya da zaman tanımı için Unix zaman damgasını bulur ve döndürür.

// Şimdi
echo strtotime("now") . "\n";

// 10 Eylül 2010
echo strtotime("10 September 2010") . "\n";

// Yarın
echo strtotime("+1 day") . "\n";

// Hafta
echo strtotime("+1 week") . "\n";

//1 hafta 2 gün 4 saat 2 saniye sonrası
echo strtotime("+1 week 2 days 4 hours 2 seconds") . "\n";

// Önümüzdeki Perşembe 
echo strtotime("next Thursday") . "\n";

// Geçen Pazartesi
echo strtotime("last Monday") . "\n";

yukarıdaki örnek

1634905205
1284069600
1634991605
1635510005
1635700807
1635372000
1634508000

benzeri bir çıktı üretir.


Yerelleştirme

PHP’de zaman işlemlerini yerelleştirmek için kullanılan belirli fonksiyonlar vardır.

date_default_timezone_get()

Geçerli kapsamda kullanılan zaman dilimi bilgisini döndürür.

echo date_default_timezone_get(); #Output : Europe/Istanbul

date_default_timezone_set()

Geçerli kapsamda kullanılan zaman dilimi bilgisini tanımlamak ya da değiştirmek için kullanılır.

echo date_default_timezone_get(); #Output : Europe/Istanbul

date_default_timezone_set("Europe/Berlin");

echo date_default_timezone_get(); #Output : Europe/Berlin

php.ini dosyası üzerinden de geçerli zaman dilimi bilgisini tanımlamak mümkündür. php.ini dosyasından aşağıdaki satırdaki gibi tanımlama yapabilirsiniz. Satır başında noktalı virgül varsa, kaldırmanız gerekir.

date.timezone = Europe/Istanbul

timezone_identifiers_list()

Desteklenen zaman dilimlerini bir dizi olarak döndürür.

print_r(timezone_identifiers_list(1));

Bu fonksiyon desteklenen tüm zaman dilimlerini döndürür. Ancak bunun yerine sadece belli kıtalara ait zaman dilimlerini döndürmesini de sağlayabilirsiniz.

print_r(timezone_identifiers_list(1)); // Afrika 
print_r(timezone_identifiers_list(2)); // Amerika 
print_r(timezone_identifiers_list(4)); // Antartika 
print_r(timezone_identifiers_list(8)); // Kuzey Kutbu 
print_r(timezone_identifiers_list(16)); // Asya 
print_r(timezone_identifiers_list(32)); // Atlantik 
print_r(timezone_identifiers_list(64)); // Avustralya 
print_r(timezone_identifiers_list(128)); // Avrupa 
print_r(timezone_identifiers_list(256)); // Hindistan 
print_r(timezone_identifiers_list(512)); // Pasifik 
print_r(timezone_identifiers_list(2047)); // Tümü 

setlocale()

Sistemin yerelleştirme ayarını tanımlamak için kullanılır.

Not : Bu yerelleştirme ayarı sadece tarih ve saati değil, para ve coğrafi konumu da tanımlamak için kullanılır.

setlocale(LC_ALL, "tr_TR");

getdate()

Geçerli zaman bilgilerini kullanarak bir dizi üretir ve döndürür.

print_r(getdate());

aşağıdakine benzer bir çıktı üretir :

Array
(
    [seconds] => 8 // Saniye
    [minutes] => 54 // Dakika
    [hours] => 20 // Saat
    [mday] => 29 // Ayın kaçıncı günü
    [wday] => 3 // Haftanın kaçıncı günü
    [mon] => 9 // Ay
    [year] => 2021 // Yıl
    [yday] => 271 // Yılın Kaçıncı Günü
    [weekday] => Wednesday // Gün Adı
    [month] => September // Ay Adı
    [0] => 1632941648 // Zaman Damgası
)

Parametre olarak bir Unix zaman damgası verilirse; aynı diziyi verilen zaman damgası için oluşturur.

print_r(getdate(1601332245));

çıktısı :

Array
(
    [seconds] => 45
    [minutes] => 30
    [hours] => 1
    [mday] => 29
    [wday] => 2
    [mon] => 9
    [year] => 2020
    [yday] => 272
    [weekday] => Tuesday
    [month] => September
    [0] => 1601332245
)

localtime()

Yerel zaman bilgilerini kullanarak bir dizi üretir ve döndürür.

print_r(localtime());

aşağıdakine benzer bir çıktı üretir :

Array
(
    [0] => 8 // Saniye
    [1] => 54 // Dakika
    [2] => 20 // Saat
    [3] => 29 // Ayın kaçıncı günü
    [4] => 8 // Ay İndisi (Ocak = 0, Aralık = 11)
    [5] => 121 // 1900 yılından itibaren geçen yıl
    [6] => 3 // Haftanın kaçıncı günü
    [7] => 271 // Yılın kaçıncı günü
    [8] => 1 // Yaz Saati uygulaması
)

localtime() fonksiyonuna ilk parametre olarak bir zaman damgası verilebilir. Bu durumda belirtilen zaman damgası için bir dizi üretir.
İkinci parametre olarak da true verilirse oluşturulan dizi elemanlarına “tm_” ön ekine sahip anahtarlar atanır.

print_r(localtime(1632941648, true));

çıktısı :

Array
(
    [tm_sec] => 8
    [tm_min] => 54
    [tm_hour] => 20
    [tm_mday] => 29
    [tm_mon] => 8
    [tm_year] => 121
    [tm_wday] => 3
    [tm_yday] => 271
    [tm_isdst] => 1
)

mktime()

Belirtilen zamanın Unix zaman damgasını döndürür.
6 parametre alır.
1. Saat
2. Dakika; belirtilmezse çalışma zamanı dakika bilgisini kullanır
3. Saniye; belirtilmezse çalışma zamanı saniye bilgisini kullanır
4. Ay; belirtilmezse çalışma zamanı saniye bilgisini kullanır
5. Gün; belirtilmezse çalışma zamanı gün bilgisini kullanır
6. Yıl; belirtilmezse çalışma zamanı yıl bilgisini kullanır

echo mktime(1, 30, 45, 9, 29, 2020); #Output : 1601332245

yukarıdaki kod 29 Eylül 2020 saat 1:30:45 zamanı için zaman damgasını yazdırır.


microtime()

Geçerli Unix zaman damgasını mikrosaniye ile birlikte döndürür.

echo microtime(); #Output : 0.96196400 1632943421

gettimeofday()

Geçerli zamanın Unix zaman damgası, mikrosaniye, Greenwich’in batı saniyeleri ve yaz saati düzetmesi bilgisini bir dizi olarak döndürür.

print_r(gettimeofday());

aşağıdakine benzer bir çıktı üretir;

Array
(
    [sec] => 1632943707 // Zaman damgası
    [usec] => 644355 // Mikrosaniye
    [minuteswest] => -180 // Greenwich'in batı saniyeleri
    [dsttime] => 0 // Yaz saati düzeltmesi
)

Parametre olarak true verirseniz bir dize şeklinde döndürür.

echo gettimeofday(true);

aşağıdakine benzer bir çıktı üretir;

1632943707.6444

Zaman Nesnesi ve Yordamsal Kullanım İşlevleri (DateTime)

PHP’nin dahili DateTime sınıfı sayfa içerisinde bir veya birden fazla kez bir zaman nesnesi oluşturmak için kullanılır. Zaman nesnelerinin çeşitli kullanım senaryoları olabilir.

Not : Sınıf, nesne gibi kavramların ne anlama geldiğini henüz bilmiyor olabilirsiniz. Bu yüzden bu kavramlar üzerinde şuan için çok durmamanızı rica ediyorum. Burada sadece işlev ve kullanım şekillerine odaklanın.

date_create()

DateTime sınıfının kurucu metodunun yani DateTime::__construct() yordamsal kullanımı için takma adıdır. İstenilen tarih için bir DateTime nesnesi oluşturur ve döndüdür.

$zaman = date_create();

print_r($zaman);

Yukarıda date_create() işlevine her hangi bir parametre vermediğimiz için çalışma zamanı ile bir DateTime nesnesi oluşturur. Çıktısı :

DateTime Object
(
    [date] => 2021-10-22 11:21:57.628484
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)

date_create() işlevi ile belli bir zaman için DateTime nesnesi oluşturması isteniyorsa; YYYY-MM-DD HH:II:SS formatında belirtilmelidir.

$zaman = date_create("2001-04-23");
print_r($zaman);

Çıktısı:

DateTime Object
(
    [date] => 2001-04-23 00:00:00.000000
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)

şeklindedir.

Yukarıdaki örnekte saat ve dakika gibi bilgileri vermediğimiz için bunları 0 olarak kabul etti. Bunları da belirtmiş olsaydım;

$zaman = date_create("2001-04-23 03:15:45");
print_r($zaman);

Çıktısı :

DateTime Object
(
    [date] => 2001-04-23 03:15:45.000000
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)

şeklinde olurdu.

Not : Her ne kadar print_r() fonksiyonu ile üretilen nesneyi ekrana yazdırıyor olsak da üretilen veri bir dizi değil nesnedir. Bu yüzden bir dizi gibi üretilen veriyi kullanamazsınız.

date_date_set()

DateTime sınıfının setDate() metodunun yani DateTime::setDate() yordamsal kullanım için takma adıdır. Oluşturulmuş olan DateTime nesnesini yeni Yıl, Ay, Gün bilgisini atamak için kullanılır.

$zaman = date_create("2001-04-23");

date_date_set($zaman, 2023, 8, 30);

print_r($zaman);

Yukarıdaki örneğin çıktısı:

DateTime Object
(
    [date] => 2023-08-30 00:00:00.000000
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)

şeklindedir.

date_time_set()

DateTime sınıfının setTime() metodunun yani DateTime::setTime() yordamsal kullanım için takma adıdır. Oluşturulmuş olan DateTime nesnesini yeni Saat, Dakika, Saniye ve Mikrosaniye bilgisini atamak için kullanılır.

$zaman = date_create("2001-04-23");

date_time_set($zaman, 9, 30, 15);

print_r($zaman);

yukarıdaki örneğin çıktısı;

DateTime Object
(
    [date] => 2001-04-23 09:30:15.000000
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)

şeklindedir.

date_timestamp_get()

DateTime sınıfının getTimestamp() metodunun yani DateTime::getTimestamp() yordamsal kullanım için takma adıdır. Oluşturulmuş zaman nesnesinin Unix zaman damgasını döndürür.

$zaman = date_create("2001-04-23");

echo date_timestamp_get($zaman);

yukarıdaki örneğin çıktısı:

987976800

şeklindedir.

date_timestamp_set()

DateTime sınıfının setTimestamp() metodunun yani DateTime::setTimestamp() yordamsal kullanım için takma adıdır. Zaman nesnesine Unix zaman damgası ile atama yapar ve oluşturulan zaman nesnesini döndürür.

$zaman = date_create();

date_timestamp_set($zaman, 987976800);

print_r($zaman);

yukarıdaki örneğin çıktısı:

DateTime Object
(
    [date] => 2001-04-23 00:00:00.000000
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)

şeklindedir.

date_create_from_format()

DateTime sınıfının createFromFormat() metodunun yani DateTime::createFromFormat() yordamsal kullanım için takma adıdır. Zaman nesnesi oluştururken belli bir formatta tanımlama yapabilmenizi sağlar.

$zaman = date_create_from_format("d-M-Y", "24-Oct-1992");

print_r($zaman);

yukarıdaki örneğin çıktısı:

DateTime Object
(
    [date] => 1992-10-24 12:20:36.000000
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)

şeklindedir.

date_format()

DateTime sınıfının format() metodunun yani DateTime::format() yordamsal kullanım için takma adıdır. Oluşturulmuş bir zaman nesnesini formatlayarak (biçimlendirerek) döndüdür.

$zaman = date_create("1992-10-24");

echo date_format($zaman, "d-M-Y");

çıktısı :

24-Oct-1992

şeklindedir.

date_modify()

DateTime sınıfının modify() metodunun tani DateTime::modify() yordamsal kullanım için takma adıdır. Oluşturulmuş zaman nesnesi üzerine zaman eklemek için kullanılır.

$zaman = date_create("1992-10-24");

date_modify($zaman, "+3 hour");

print_r($zaman);

çıktısı :

DateTime Object
(
    [date] => 1992-10-24 03:00:00.000000
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)

şeklindedir.

+1 year : 1 yıl ekler.
+3 month : 3 ay ekler.
+5 day : 5 gün ekler.
+4 hour : 4 saat ekler.
+30 minute : 30 dakika ekler.
+10 second : 10 saniye ekler.

Bu ilave işlemi pozitif yönlü olabildiği gibi negatif yönlüde olabilir. Örneğin: +3 day 3 gün sonrasını ifade ederken, -3 day 3 gün öncesini ifade eder.

date_add()

DateTime sınfının add() metodunun yani DateTime::add() yordamsal kullanım için takma adıdır. Oluşturulmuş bir zaman nesnesine date_modify() fonksiyonu gibi ilave yapmakta kullanılır ancak kullanımı biraz farklıdır.

İkinci parametre olarak bir DateInterval nesnesi alır.

$zaman = date_create("1992-10-24");

date_add($zaman, new DateInterval('P10D'));

print_r($zaman);

çıktısı :

DateTime Object
(
    [date] => 1992-11-03 00:00:00.000000
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)

şeklindedir.

date_add() fonksiyonunu date_modify() gibi kullanmak istiyorsanız, date_interval_create_from_date_string() fonksiyonu ile ilave edilecek zaman miktarını belirtebilirsiniz.

$zaman = date_create("1992-10-24");

date_add($zaman, date_interval_create_from_date_string("+10 day"));

print_r($zaman);

çıktısı:

DateTime Object
(
    [date] => 1992-11-03 00:00:00.000000
    [timezone_type] => 3
    [timezone] => Europe/Berlin
)

şeklindedir.

date_diff()

DateTime sınıfına ait diff() metodunun yani DateTime::diff() yordamsal kullanım için takma adıdır. İki zaman nesnesi arasındaki farkı hesaplamak için kullanılır.

$zamanBir = date_create("1992-10-24");
$zamanIki = date_create("1977-10-10");

$diff = date_diff($zamanBir, $zamanIki);

print_r($diff);

çıktısı :

DateInterval Object
(
    [y] => 15
    [m] => 0
    [d] => 14
    [h] => 0
    [i] => 0
    [s] => 0
    [f] => 0
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 1
    [days] => 5493
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)

şeklindedir.

date_diff() işlevi tarafından döndürülen değeri belirtilecek olan formata göre biçimlendirmek için format() metodu kullanılır. format() metodunda kullanılabilecek ifadeleri aşağıdaki tabloda görebilirsiniz.

İFADEAçıklama
%yYıl farkının değerini ifade eder.
%mAy farkının değerini ifade eder.
%dGün farkının değerini ifade eder.
%hSaat farkının değerini ifade eder.
%iDakika farkının değerini ifade eder.
%sSaniye farkının değerini ifade eder.
%RPozitif ve negatif imlecini ifade eder.

Örnek

$zamanBir = date_create("1992-10-24");
$zamanIki = date_create("1977-10-10");

$diff = date_diff($zamanBir, $zamanIki);

$format = $diff->format("%y yıl %m ay %d gün");

echo $format;

çıktısı :

15 yıl 0 ay 14 gün

şeklindedir.


date_sun_info()

Belirtilen tarih ve komuna ait gün doğumu, gün batımı, alacakaranlık başlangıç ve bitişi bilgilerinin bulunduğu bir dizi döndürür.

3 parametre alır.
İlk parametre olarak Unix zaman damgası alır.
İkinci parametre olarak Enlem bilgisini,
Üçüncü parametre olarak Boylam bilgisini alır.

$zaman = strtotime("1992-10-24");

$sun_info = date_sun_info($zaman, 41.0194, 28.95457);

print_r($sun_info);

çıktısı:

Array
(
    [sunrise] => 719900676
    [sunset] => 719939528
    [transit] => 719920102
    [civil_twilight_begin] => 719899078
    [civil_twilight_end] => 719941125
    [nautical_twilight_begin] => 719897150
    [nautical_twilight_end] => 719943053
    [astronomical_twilight_begin] => 719895238
    [astronomical_twilight_end] => 719944965
)

şeklindedir.

Döndürdüğü değerler;
sunrise : Gün doğumu,
sunset : Gün batımı,
civil_twilight_begin : Kara alacakaranlık başlangıcı
civil_twilight_end : Kara alacakaranlık bitişi
nautical_twilight_begin : Deniz alacakaranlık başlangıcı
nautical_twilight_begin : Deniz alacakaranlık bitişi
astronomical_twilight_begin : Astronomik alacakaranlık başlangıcı
astronomical_twilight_begin : Astronomik alacakaranlık bitişi

PHP’de zaman ve tarih işlemleri için en sık kullanılan işlevler bunlardır.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s