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

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.

İFADE | Açıklama | Örnek
Y | Yılın dört haneli sayısal değerini ifade eder. | 2000, 2018, 2021, ...
o | ISO-8601 standartlarına uygun olacak şekilde yılın dört haneli sayısal değerini ifade eder. | 2000, 2018, 2021, ...
y | Yılın iki haneli sayısal değerini ifade eder. | 00, 18, 21, ...
n | Ayın sayısal değerini ifade eder. | 1, 2, ..., 12
m | Ayın 0 dolgulu 2 haneli sayısal değerini ifade eder. | 01, 02, ..., 12
F | Ayın tam adını (İngilizce) ifade eder. | January, ..., December
M | Ayın kısa adını (İngilizce) ifade eder. | Jan, ..., Dec
t | Ayın toplam gün sayısı bilgisini ifade eder. | 28, 29, 30 ve ya 31
j | Günün sayısal değerini ifade eder. | 1, 2, ..., 31
d | Gü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
D | Günün 3 haneli kısa adını (İngilizce) ifade eder. | Mon, ..., Sun
S | Gü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
G | 24 saatlik sistemde saat değerini ifade eder. | 0, 1, ..., 23
H | 24 saatlik sistemde saat değerini 0 dolgulu 2 karakterli olarak ifade eder. | 00, 01, ..., 23
g | 12 saatlik sistemde saat değerini ifade eder. | 1, 2, ..., 12
h | 12 saatlik sistemde saat değerini 0 dolgulu 2 karakterli olarak ifade eder. | 01, 02, ..., 12
a | 12 saatlik sistem için iki küçük karakterli "am" (öğleden önce), "pm" (öğleden sonra) değerini ifade eder. | am veya pm
A | 12 saatlik sistemi için iki büyük karakterli "AM" (öğleden önce), "PM" (öğleden sonra) değerini ifade eder. | AM veya PM
i | Dakika bilgisinin 0 dolgulu 2 haneli değerini ifade eder. | 00, 01, ..., 59
s | Saniye bilgisinin 0 dolgulu 2 haneli değerini ifade eder. | 00, 01, ..., 59

W

ISO-8601 standartlarına uygun yılın kaçıncı haftası olduğu bilgisini ifade eder.
Hafta başlangıcı Pazartesidir.

1, 2, ..., 52

z

Yı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

w

Haftanın kaçıncı günü olduğu bilgisini ifade eder.
0'dan (Pazar) 6'ya (Cumartesi) kadar.

0, 1, ..., 6

N

ISO-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

L

Yı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

e | Kullanılan geçerli zaman dilimi bilgisini ifade eder. | Europe/Istanbul, ...

T

Kullanı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

O | GMT (Greenwich Mean Time) zaman farkı değerini ifade eder. | +0200, ...
P | GMT (Greenwich Mean Time) zaman farkı değerini saat ve dakika olarak ifade eder. | +02:00, ...
c | ISO-8601 standartlarına uygun zaman bilgisini ifade eder. | 2021-09-29T13:34:47+02:00
r | RFC 2822 standartlarına uygun zaman bilgisini ifade eder. | Wed, 29 Sep 2021 13:35:35 +0200
U | Geç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.

İFADE | Açıklama | Örnek
%C | Yüzyıl bilgisinin iki haneli sayısal değerini ifade eder. | 20, 21, ...
%G | Yıl bilgisinin dört haneli sayısal değerini ifade eder. | 2000, ..., 2021, ...
%Y | ISO-8601 standartlarına uygun olarak yıl bilgisinin dört haneli sayısal değerini ifade eder. | 2000, ..., 2021, ...
%g | Yıl bilgisinin iki haneli sayısal değerini ifade eder. | 00, ..., 21, ...
%y | ISO-8601 standartlarına uygun olarak yıl bilgisinin iki haneli sayısal değerini ifade eder. | 00, ..., 21, ...
%m | Ay bilgisinin iki haneli (0 dolgulu) sayısal değerini ifade eder. | 01, 02, ..., 12
%B | Ay bilgisinin tam adını ifade eder. | January, ..., December
%b | Ay bilgisinin kısa adını ifade eder. (%h ile aynı işi yapar) | Jan, ..., Dec
%h | Ay bilgisinin kısa adını ifade eder. (%b ile aynı işi yapar) | Jan, ..., Dec
%d | Gün bilgisinin iki haneli (0 dolgulu) sayısal değerini ifade eder. | 01, 02, ..., 31
%e | Gün bilgisinin sayısal değerini ifade eder. | 1, 2, ..., 31
%A | Gün bilgisinin tam adını ifade eder. | Sunday, ..., Saturday
%a | Gün bilgisinin kısa adını ifade eder. | Sun, ..., Sat
%H | 24 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
%p | 12 saatlik sistemde iki karakterli AM (öğleden önce) ya da PM (öğleden sonra) bilgisini ifade eder. | AM ya da PM
%M | Dakikanın iki haneli (0 dolgulu) sayısal değerini ifade eder. | 00, 01, ..., 59
%S | Saniyenin iki haneli (0 dolgulu) sayısal değerini ifade eder. | 00, 01, ..., 59
%r | 12 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

%U

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ı 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

%V | Yılın kaçıncı haftası olduğu bilgisini ISO-8601 standartlarına uygun ifade eder. | 1, 2, ..., 52
%j | Yılın kaçıncı günü olduğu bilgisini sayısal değerini ifade eder. | 1, 2, ..., 366

%w

Haftanın kaçıncı günü olduğu bilgisinin sayısal değerini ifade eder.
(0 Pazar, 6 Cumartesi)

0, 1, ..., 6

%u

Haftanı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

%c | Tam tarih ve saat bilgisini ifade eder. | Wed Sep 29 15:57:09 2021
%D | Ay, 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
%F | Yıl, Ay ve Gün (YYYY-MM-DD) sıralamasını esas alan tarih bilgisini ifade eder. | 2021-09-29
%T | Tam saat bilgisini ifade eder. | 16:02:56
%X | Tam saat bilgisini ifade eder. | 16:02:56
%R | Saat ve dakika bilgisini ifade eder. | 16:02
%Z | Geçerli zaman dilimi değerini ifade eder. | Türkiye Yaz Saati
%n | Yeni satır karakteri değerini ifade eder. | \n
%t | TAB (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.

İFADE | Açıklama
%y | Yıl farkının değerini ifade eder.
%m | Ay farkının değerini ifade eder.
%d | Gün farkının değerini ifade eder.
%h | Saat farkının değerini ifade eder.
%i | Dakika farkının değerini ifade eder.
%s | Saniye farkının değerini ifade eder.
%R | Pozitif 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.