Tarih ve Zaman Kütüphaneleri


    × Bunları biliyor muydunuz?
"Devtools projesi ile framework kullanma deneyiminizi daha görsel hale getirebilirsiniz."


Tarih ve Zaman ile ilgili işlevleri yerine getiren bir sınıftır. Bu kütüphane standart tarih ve saat biçimlerinin dışında özel çevrimleri de kullanmaktadır. Böylece daha akılda kalıcı tarih ve zaman terimleri kullanılabilir hale getirilmiştir. Bu bölümde Date ve Time olmak üzere iki kütüphanenin anlatımına yer verilmiştir. Her iki kütüphanenin özünde yaptığı işler aynı olsa da karakter setlerinde ve yerel ayarlamalarında küçük farklılıklar bulunmaktadır.

 

 

# Yerel Ayarları Yapılandırma


Yerel tarih, saat ve bölge ayarlarını yapılandırırmak için aşağıdaki yapılandırma dosyası kullanılır.

Dosya: Config/Project.php
DateTime
String $timezone = 'Europe/Istanbul' Saat dilimini belirlemek için bölge seçimi.
Array $locale = [] Ay, gün bilgilerinin dilini ayarlamak için kullanılır.
String
$charset = 'tr_TR.UTF-8'
Zaman deyimlerinde yer alan karakterlerin kodlama desteğini ayarlamak için kullanılır.
String $language = 'turkish' Ay ve gün bilgilerinin hangi dilde görüntüleneceğini ayarlamak için kullanılır.

 

 

# Kurulum


ZN SE ve ZN CE dağıtımları için terminal kurulum komutu.

↓ composer require znframework/package-datetime

 

 

# Özel Çevrimler


Bu çevrimlerin amacı daha açık ve anlaşılır tarih zaman ifadeleri kullanmaktır. Bu çevrimlerin kullanımı zorunlu değildir. İstenirse klasik tarih ve zaman ifadeleride kullanılabilir.,

Ortak Date ve Time Çevrimleri Anlamları Karşılıklar
{shortDayName}|{shortDay}|{SD} Günün kısaltılmış hali. Mon, Sun
{dayName}|{day}|{D} Günün tam ismi. Monday, Sunday
{dayNumber0}|{dayNum0}|{DN0} Ayın iki basamaklı günü. 01 - 31
{dayNumber}|{dayNum}|{DN} Ayın tek basamaklı günü. 1 - 31
{yearDayNumber0}|{yearDayNum0}|{YDN} Yılın 3 basamaklı günü. 001 - 366
{weekDayNumber}|{weekDayNum}|{WDN} Haftanın gününün 1 den başlayan sayısal gösterimi. 1 (Monday) - 7 (Sunday)
{weekNumber}|{weekNum}|{WN} Haftanın gününün 0 dan başlayan sayısal gösterimi. 0 (Sunday) - 6 (Saturday)
{shortMonthName}|{shortMonth}|{SM} Kısaltılmış ay adı Jan, Dec
{monthName}|{month}|{mon} Tam ay adı. January, December
{monthNumber0}|{monNum0}
{monthNumber}|{monNum}
{MN}|{MN0}
İki basamaklı ayın sayısal gösterimi. 01 (January) - 12 (fDecember)
{shortYear}|{SY} Yılın iki basamaklı gösterimi. 18 (2018) - 20 (2020)
{year}|{Y} Yılın tam gösterimi. 2018 - 2020
{hour}|{hour024}|{H024} 24 saatlik formatta saatin iki haneli gösterimi. 00 - 23
{hour24}|{H24} 24 saatlik formatta saatin tek haneli gösterimi. 0 - 23
{hour012}|{H012} Saatin 12 saatlik formatta iki haneli gösterimi 01 - 12
{hour12}|{H12} Saatin 12 saatlik formatta iki haneli gösterimi 1 - 12
{minute0}|{minute}|{min}|{min0} Dakikanın iki haneli gösterimi. 00 - 59
{AMPM}|{AM} Verilen zamana göre büyük harfli AM - PM gösterimi. AM for 00:31, PM for 22:23
{ampm}|{am} Verilen zamana göre küçük harfli am - pm gösterimi. am for 00:31, pm for 22:23
{second}|{second0}|{sec}|{sec0} Saniyenin iki haneli gösterimi. 00 - 59

 

 

# Yöntemler


Ortak Yöntemler
3.0.0 String set(String $exp)
3.0.0 String calculate(String $input, String $calculate, String $output = 'Y-m-d')
3.0.0 Bool compare(String $value1, String $condition, String $value2)
3.0.0 Int toNumeric(String $dateFormat, Int $now = NULL)
5.3.5 String toReadable(Int $now = NULL, String $dateFormat = 'Y-m-d H:i:s')
3.0.0 String convert(String $date, String $format)
2.0.0 String standart()
2.0.0 String current(String $clock)
5.7.6 Bool isPast(String $datetime)
5.7.6 This locale(String ...$parameters)
5.7.6 This zone(String $zone)
Tarih Yöntemleri
5.7.6 Bool isDay(String $date = NULL)
5.7.6 Bool isMonth(String $date = NULL)
5.7.6 Bool isWeekend(String $date = NULL)
5.7.6 String today(String $date = NULL)
5.7.6 String todayNumber(String $date = NULL)
5.7.6 String current[Day|Week|Month|MonthNumber|Year](Void)
5.7.6 String next[Day|DayNumber|Month|MonthNumber|Year](String $date = NULL)
5.7.6 String prev[Day|DayNumber|Month|MonthNumber|Year](String $date = NULL)
5.7.6 String add[Day|Week|Month|Year](String $date, Int $count = 1)
5.7.6 String remove[Day|Week|Month|Year](String $date, Int $count = 1)
5.7.6 Float diff[Day|Week|Month|Year][Up|Down|Average](String $oldDate, String $newDate)
5.7.6 String yesterday(String $date = NULL)
5.7.6 String tomorrow(String $date = NULL)
Zaman Yöntemleri
5.7.6 String current[Hour|Minute|Second](Void)
5.7.6 String next[Hour|Minute|Second](String $time = NULL)
5.7.6 String prev[Hour|Minute|Second](String $time = NULL)
5.7.6 String add[Hour|Minute|Second](String $time = NULL, Int $count = 1)
5.7.6 String remove[Hour|Minute|Second](String $time = NULL, Int $count = 1)
5.7.6 Float diff[Hour|Minute|Second][Up|Down|Average](String $oldTime, String $newTime)
DT Kütüphanesi Yöntemleri
5.7.6 This date|time(String $datetime)
5.7.6 String get(String $output = NULL)

 

 

# Set (ZN >= 2.0.0)


Güncel tarih ve zaman ifadesi oluşturmak için kullanılır.

Parametreler

String $exp Tarih zaman ifadesi.
Return String

Kullanımı

echo Date::set('{day}');
echo Date::set('{monNum}-{mon} {day}');
echo Date::set('{H024}:{min}:{sec}');
echo Date::set('{dayNumber0}.{monthNumber}.{year} {hour024}:{minute}:{second}');
Sunday
2-February Sunday
15:46:52
08.2.2015 15:47:06

 

 

# Calculate (ZN >= 3.0.0)


Tarih bilgisi üzerinde ekleme çıkarma gibi işlemler gerçekleştirmek için kullanılmaktadır

Parametreler

String $input Tarih girdisi.
String $calculate Eklenecek veya çıkarılacak değer.
String $output Çıktının deyimsel dizilimi.
Return String

Kullanımı

echo Date::calculate('{year}-{monthNumber}-{dayNumber}', '30 day');
echo Date::calculate('01/12/2015', '-30 day', '{dayNumber}-{monthNumber}-{year}');
2017-01-30
01-11-2015

Zaman hesaplaması için aşağıdaki gibi kullanabilirsiniz.

echo Time::calculate('10:30', '-30 minutes', '{hour}:{minute}');
10:00

 

 

# Compare (ZN >= 3.0.0)


Tarih bilgilerini karşılaştırmak için kullanılır.

Parametreler

String $value1 1. tarih bilgisi.
String $compare Karşılaştırma ifadesi.
String $output 2. tarih bilgisi
Return Bool

Kullanımı

echo Date::compare('2015-02-15', '>', '2015-02-14'); 
true

 

 

# ToNumeric (ZN >= 3.0.0)


Tarih bilgisini sayısal veriye dönüştürmek için kullanılır.

Parametreler

String $dateFormat Tarih formatı.
Int $now = NULL Göreli tarihlerin hesaplanması için bir taban olarak kullanılan zaman damgası.
Return Int

Kullanımı

echo Date::toNumeric('2015-02-15');
1423951200 

 

 

# ToReadable (ZN >= 5.3.5)


Sayısal veriyi okunabilir tarih ve zamana çevirir.

Parametreler

Int $time Sayısal veri.
String $dateFormat Tarih formatı.
Return String

Kullanımı

echo Date::toReadable('1423951200', '{year}-{monthNumber}-{dayNumber}');
2015-02-15

 

 

# Convert (ZN >= 3.0.0)


Tarih bilgisininin formatını değiştirmek için kullanılır.

Parametreler

String $date Tarih bilgisi.
String $newFormat Tarihin yeni formatı.
Return String

Kullanımı

echo Date::convert('2015-02-15', '{dayNumber}/{monthNumber}/{year}');
15/2/2015

 

 

# Standart (ZN >= 2.0.0)


Standart tarih ve zaman bilgisini almak için kullanılır. Eğer bu yöntemi Time sınıfı ile kullanılırsa bölge seçiminin diline göre çevrilir.

Parametreler

Void
Return String

Kullanımı

echo Date::standart();
echo Time::standart(); 
20.February.2016 Saturday, 12:46:55
20.Şubat.2016 Cumartesi, 12:46:55

 

 

# Current (ZN >= 2.0.0)


Bu yöntem Time sınıfı ile kullanılırsa aktif saat, Date sınıfı ile kullanılırsa aktif tarih bilgisini verir.

Parametreler

Void
Return String

Kullanımı

echo Date::current();
echo Time::current();
20.02.2016
12:52:45

 

 

# IsPast (ZN >= 5.7.6)


Zamanın veya tarihin aktif gün veya tarihten daha eski olup olmadığını kontrol eder.

Parametreler

5.7.6 String $datetime Kontrol edilecek tarih veya zama
Return Bool    

Kullanımlar

echo Date::isPast('2017/01/30');
true
echo Time::isPast('23:11');
true

 

 

# Locale (ZN >= 5.7.6)


Yereli ayarlar. Kullanımı setlocale(LC_ALL, ...$parameters) gibidir.

Parametreler

5.7.6 String ...$parameters Yerel parametreleri.
Return This    

Kullanımlar

Time::locale('en_US.UTF-8');

 

 

# Zone (ZN >= 5.7.6)


Saat dilimini ayarlar. Kullanımı timezone() gibidir.

Parametreler

5.7.6 String $zone Geçerli bölge adı
Return This    

Kullanımlar

Time::zone('America/Toronto');

 

 

# IsDay (ZN >= 5.7.6)


Bugünün hangi gün olup olmadığını kontrol eder.

Parametreler

5.7.6 String $date = NULL Bu parametrenin boş geçilmesi durumunda bugünün aksi halde belirlenen tarihin kontrolünü yapar.
Return Bool    

Kullanımlar

echo Date::isSaturday()# true or false.

 

 

# IsMonth (ZN >= 5.7.6)


Bu ayın hangi ay olup olmadığını kontrol eder.

Parametreler

5.7.6 String $date = NULL Bu parametrenin boş geçilmesi durumunda bugünün aksi halde belirlenen tarihin kontrolünü yapar.
Return Bool    

Kullanımlar

echo Date::isJanuary()# true or false.

 

 

# IsWeekend (ZN >= 5.7.6)


Bugün veya belirli bir tarihin hafta sonuna denk gelip gelmediğini kontrol eder.

Parametreler

5.7.6 String $date = NULL Bu parametrenin boş geçilmesi durumunda bugünün aksi halde belirlenen tarihin kontrolünü yapar.
Return Bool    

Kullanımlar

echo Date::isWeekeend()# Bugün hafta sonu mu?
echo Date::isWeekeend('2015/01/30')# 20015/01/30 tarihi hafta sonu mu?

 

 

# Today (ZN >= 5.7.6)


Bugünün veya belirtilen tarihin hangi gün olduğunu bilgisini verir.

Parametreler

5.7.6 String $date = NULL Bu parametrenin boş geçilmesi durumunda bugünün aksi halde belirlenen tarihin kontrolünü yapar.
Return String    

Kullanımlar

echo Date::today(); # Sunday
echo Date::today('1988/01/21'); # Thursday

 

 

# TodayNumber (ZN >= 5.7.6)


Bugünün veya belirtilen tarihin ayın kaçıncı günü olduğunu bilgisini verir.

Parametreler

5.7.6 String $date = NULL Bu parametrenin boş geçilmesi durumunda bugünün aksi halde belirlenen tarihin kontrolünü yapar.
Return String    

Kullanımlar

echo Date::todayNumber(); # 3
echo Date::todayNumber('1988/01/21'); # 21

 

 

# Next (ZN >= 5.7.6)


Bugünün veya belirtilen tarihin/zamanın belirtilen türe (gün, ay, yıl...) göre sonraki değerini verir.

Parametreler

5.7.6 String $date = NULL Bu parametrenin boş geçilmesi durumunda bugünün aksi halde belirlenen tarih veya zamanın kontrolünü yapar.
Return String    

Kullanımlar

output( Date::nextDay() );                     # Monday
output( Date::nextDay('2018/01/15') );         # Tuesday
output( Date::nextDayNumber() );               # 4
output( Date::nextDayNumber('2018/01/15') );   # 16
output( Date::nextMonth() );                   # July
output( Date::nextMonth('2018/01/15') );       # Feruary
output( Date::nextMonthNumber() );             # 7
output( Date::nextMonthNumber('2018/01/15') ); # 2
output( Date::nextYear() );                    # 2019
output( Date::nextYear('2018/01/15') );        # 2019
output( Time::nextHour() );                    # 12
output( Time::nextHour('12:30') );             # 13
output( Time::nextMinute() );                  # 13
output( Time::nextMinute('12:30') );           # 31
output( Time::nextSecond() );                  # 17
output( Time::nextSecond('12:30:50') );        # 51

 

 

# Prev (ZN >= 5.7.6)


Bugünün veya belirtilen tarihin/zamanın belirtilen türe (gün, ay, yıl...) göre önceki değerini verir.

Parametreler

5.7.6 String $date = NULL Bu parametrenin boş geçilmesi durumunda bugünün aksi halde belirlenen tarih veya zamanın kontrolünü yapar.
Return String    

Kullanımlar

output( Date::prevDay() );                     # Saturday
output( Date::prevDay('2018/01/15') );         # Sunday
output( Date::prevDayNumber() );               # 2
output( Date::prevDayNumber('2018/01/15') );   # 14
output( Date::prevMonth() );                   # May
output( Date::prevMonth('2018/01/15') );       # December
output( Date::prevMonthNumber() );             # 5
output( Date::prevMonthNumber('2018/01/15') ); # 12
output( Date::prevYear() );                    # 2017
output( Date::prevYear('2018/01/15') );        # 2017
output( Time::prevHour() );                    # 10
output( Time::prevHour('12:30') );             # 11
output( Time::prevMinute() );                  # 12
output( Time::prevMinute('12:30') );           # 29
output( Time::prevSecond() );                  # 41
output( Time::prevSecond('12:30:50') );        # 49

 

 

# Add (ZN >= 5.7.6)


Bugünün veya belirtilen tarihin/zamanın belirtilen türe (gün, ay, yıl...) göre aynı türden değer ekler.

Parametreler

5.7.6 String $date = NULL Hesaplama işlemi yapılacak tarih veya zaman bilgisi. 2. parametrenin boş bırakılması durumunda 1. parametre 2. parametre gibi davranır ve fark hesaplama işlemini aktif tarih veya zaman üzerinden yapar.
5.7.6 Int $count = 1 Hesaplamaya dahil edilecek değer.
Return String    

Kullanımlar

output( Date::addDay(5) );                 # 2018-06-08
output( Date::addDay('2018/01/15', 5) );   # 2018-01-20
output( Date::addWeek(5) );                # 2018-07-08
output( Date::addWeek('2018/01/15', 5) );  # 2018-02-19
output( Date::addMonth(5) );               # 2018-11-03
output( Date::addMonth('2018/01/15', 5) ); # 2018-06-15
output( Date::addYear(5) );                # 2023-06-03
output( Date::addYear('2018/01/15', 5) );  # 2023-01-15
output( Time::addHour(5) );                # 16:27:51
output( Time::addHour('12:30', 5) );       # 17:30:00
output( Time::addMinute(5) );              # 11:32:51
output( Time::addMinute('12:30', 5) );     # 12:35:00
output( Time::addSecond(5) );              # 11:27:56
output( Time::addSecond('12:30', 5) );     # 12:30:05

 

 

# Remove (ZN >= 5.7.6)


Bugünün veya belirtilen tarihin/zamanın belirtilen türe (gün, ay, yıl...) göre aynı türden değer çıkartır.

Parametreler

5.7.6 String $date = NULL Hesaplama işlemi yapılacak tarih veya zaman bilgisi. 2. parametrenin boş bırakılması durumunda 1. parametre 2. parametre gibi davranır ve fark hesaplama işlemini aktif tarih veya zaman üzerinden yapar.
5.7.6 Int $count = 1 Hesaplamaya dahil edilecek değer.
Return String    

Kullanımlar

output( Date::removeDay(5) );                 # 2018-05-29
output( Date::removeDay('2018/01/15', 5) );   # 2018-01-10
output( Date::removeWeek(5) );                # 2018-04-29
output( Date::removeWeek('2018/01/15', 5) );  # 2017-12-11
output( Date::removeMonth(5) );               # 2018-01-03
output( Date::removeMonth('2018/01/15', 5) ); # 2017-08-15
output( Date::removeYear(5) );                # 2013-06-03
output( Date::removeYear('2018/01/15', 5) );  # 2013-01-15
output( Time::removeHour(5) );                # 12:34:28
output( Time::removeHour('12:30', 5) );       # 07:30:00
output( Time::removeMinute(5) );              # 17:29:28
output( Time::removeMinute('12:30', 5) );     # 12:25:00
output( Time::removeSecond(5) );              # 17:34:23
output( Time::removeSecond('12:30', 5) );     # 12:29:55

 

 

# Diff (ZN >= 5.7.6)


Bugünün veya belirtilen tarihin/zamanın belirtilen diğer tarih ile belirtilen türe(gün, ay, yıl) göre farkını hesaplar. 

Söz Dizimi [Date|Time]::diff[Day|Week|Month|Year|Hour|Minute|Second][Up|Down|Average]($p1, $p2)
Sınıf Adı Date|Time Date:: sınıfı tarihsel veri üzerinde işlem yaparken Time:: zamansal veri üzerinde işlem yapar.
Yöntem Adı Day|Week|Month|Year|Hour|Minute|Second Kullanılabilir diff yöntemleri. 
Yuvarlama Seçenekler Up|Down|Average Up Yukarıya yuvarlar.
Down Aşağıya yuvarlar.
Average ondalıklı hanenin 5'ten az olması durumunda aşağı aksi halde yukarı yuvarlar.

Parametreler

5.7.6 String $date1 Farkı hesaplanacak tarih veya zaman bilgisi. 2. parametrenin boş bırakılması durumunda 1. parametre 2. parametre gibi davranır ve fark hesaplama işlemini aktif tarih veya zaman üzerinden yapar.
5.7.6 String $date2 = NULL Farkı hesaplanacak diğer tarih veya zaman bilgisi.
Return Float    

Kullanımlar

output( Date::diffDayDown('2019/12/15') );                    # 560
output( Date::diffDayUp('2017/10/20', '2018/01/15') );        # 88
output( Date::diffWeekDown('2018/08/15') );                   # 10
output( Date::diffWeekUp('2017/10/20', '2018/01/15') );       # 13
output( Date::diffMonthDown('2019/12/15') );                  # 18
output( Date::diffMonthAverage('2017/10/20', '2018/01/15') ); # 3
output( Date::diffYearUp('2019/01/15') );                     # 1
output( Date::diffYearAverage('2017/10/20', '2018/01/15') );  # 0
output( Time::diffHourUp('23:30') );                          # 5
output( Time::diffHourAverage('21:30', '23:30') );            # 2
output( Time::diffMinute('12:30') );                          # 750
output( Time::diffMinute('12:30', '14:30') );                 # 120
output( Time::diffSecond('12:30') );                          # -22328
output( Time::diffSecond('12:30', '14:30') );                 # 7200

 

 

# DT (ZN >= 5.7.6)


Bu kütüphane ortak bir tarih/zaman verisi üzerinde yukarıdak yer alan yöntemler aracılığı ile işlem yapabilmek için oluşturulmuştur. Tarih üzerinde işlem yapılacaksa DT::date() zaman üzerinde işlem yapılacaksa DT::time() şeklinde kullanılmalı ve mutlaka DT::get() ile sonlandırılmalıdır.

echo DT::date('2018/01/01')->addDay(5)->addMonth(2)->get();
2018/03/06

Çıktıyı biçimlendirmek için;

echo DT::date('2018/01/01')->addDay(5)->addMonth(2)->get('{dayNumber0}-{monthNumber0}-{year}');
06-03-2018

Zamanlarla çalışmak için;

echo DT::time('10:20')->removeMinute(2)->addHour(1)->get();
11:18:00