Tarih ve Zaman Kütüphaneleri
"Kontrolcü yöntemlerine parametre olarak enjekte edilen sınıfların örneklerine aynı zamanda görünmlerinden de erişebilirsiniz."
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.
# Kurulum
ZN dağıtımları için kurulum gerekmez.
↓ composer require znframework/package-datetime
# Yöntemler
# Özel İfadeler [6.11.0][2021-05-12]
Bu çevrimlerin amacı daha açık ve anlaşılır tarih zaman ifadeleri kullanmaktır. Bu çevrimlerin kullanımı zorunlu değildir. İstenirse standart tarih ve zaman ifadeleri de kullanılabilir.,
Ortak Date ve Time Çevrimleri | Anlamları | Karşılıklar |
{day} | Günün tam ismi. | Monday, Sunday |
{day-} | Günün kısaltılmış hali. | Mon, Sun |
{dayInWeek} | Haftanın kaçıncı günü. | 1 - 7 |
{dayInMonth} | Ayın kaçıncı günü. Sıfırlı gösterim. | 01 - 30 |
{dayInMonth-} | Ayın kaçıncı günü. Sıfırsız gösterim. | 1 - 30 |
{dayInYear} | Yılın kaçıncı günü. Birden başlar. | 1 - 366 |
{dayInYear-} | Yılın kaçıncı günü. Sıfırdan başlar. | 0 - 365 |
{dayCountInMonth} | İlgili ayın gün sayısı. | 28, 29, 30, 31 |
{weekInYear} | Yılın kaçıncı haftası. | 1 - 52 |
{month} | Ayın tam ismi. | January |
{month-} | Ayın kısaltılmış ismi. | Jan |
{monthInYear} | Yıldaki kaçıncı ay. Sıfırlı gösterim | 01 - 12 |
{monthInYear-} | Yıldaki kaçıncı ay. Sıfırsız gösterim. | 1 - 12 |
{century} | İçinde bulunulan yüzyıl. | 21 |
{century-} | İçinde bulunulan yüzyıl. Tarihin ilk 2 hanesine göre. | 20 |
{year} | Yılın tam gösterimi. | 2021 |
{year-} | Yılın kısaltılmış gösterimi. | 21 |
{isLeapYear} | Artık yıl mı? Şubat ayının 29 çektiği yıl mı kontrolüdür. | 0 - 1 |
{hour} | 24'lük saat gösterimi. Sıfırlı gösterim | 01 - 24 |
{hour-} | 24'lük saat gösterimi. Sıfırsız gösterim | 1 - 24 |
{clock} | 12'lik saat gösterimi. Sıfırlı gösterim. | 01 - 12 |
{clock-} | 12'lik saat gösterimi. Sıfırsız gösterim. | 1 - 12 |
{minute} | Dakika gösterimi. Sıfırlı gösterim. | 01 - 59 |
{second} | Saniye gösterimi. Sıfırlı gösterim. | 01 - 59 |
{msecond} | Mikro saniye gösterimi. | 000000 |
{am} | Büyük harfli AM, PM gösterimi. | AM, PM |
{am-} | Küçük harfli am, pm gösterimi. | am, pm |
{iso} | ISO formatlı tarih zaman gösterimi. | 2021-05-12T15:17:36+03:00 |
{rfc} | RFC formatlı tarih zaman gösterimi. | Wed, 12 May 2021 15:17:36 +0300 |
{unix} | UNIX formatlı tarih zaman gösterimi. | 1620821856 |
# Set
Güncel tarih ve zaman ifadesi oluşturmak için kullanılır.
string $exp | Tarih zaman ifadesi. |
return string |
Kullanımı
echo Date::set('{year}-{monthInYear}-{dayInMonth} {hour}:{minute}:{second}');
2021-11-05 15:46:52
Standart İfadeler
İstenirse özel ifadeler yerine standart ifadeler de kullanılabilir.
echo Date::set('Y-m-d H:i:s');
2021-11-05 15:46:52
# Calculate
Tarih bilgisi üzerinde ekleme çıkarma gibi işlemler gerçekleştirmek için kullanılmaktadır
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}-{monthInYear}-{dayInMonth}', '30 day');
2017-01-30echo Date::calculate('01/12/2015', '-30 day', '{dayInMonth}-{monthInYear}-{year}');
01-11-2015Zaman hesaplaması için aşağıdaki gibi kullanabilirsiniz.
echo Date::calculate('10:30', '-30 minutes', '{hour}:{minute}');
10:00
# Compare
Tarih bilgilerini karşılaştırmak için kullanılır.
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
Tarih bilgisini sayısal veriye dönüştürmek için kullanılır.
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
Sayısal veriyi okunabilir tarih ve zamana çevirir.
int $time | Sayısal veri. |
string $dateFormat | Tarih formatı. |
return string |
Kullanımı
echo Date::toReadable('1423951200', '{year}-{monthInYear}-{dayInMonth}');
2015-02-15
# Convert
Tarih bilgisininin formatını değiştirmek için kullanılır.
string $date | Tarih bilgisi. |
string $newFormat | Tarihin yeni formatı. |
return string |
Kullanımı
echo Date::convert('2015-02-15', '{dayInMonth}/{monthInYear-}/{year}');
15/2/2015
# Standart
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.
return string |
Kullanımı
echo Date::standart();
20 February 2016 Saturday, 12:46:55
# Current
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.
return string |
Tarih Kullanımı
echo Date::current();
20.02.2016
Zaman Kullanımı
echo Time::current();
12:52:45
# IsPast
Zamanın veya tarihin aktif gün veya tarihten daha eski olup olmadığını kontrol eder.
string $datetime | Kontrol edilecek tarih veya zaman. |
return bool |
echo Date::isPast('2017-01-30');
true
echo Time::isPast('23:11');
true
# Check
Zamanın veya tarihin geçerli olup olmadığını kontrol eder.
string $datetime | Kontrol edilecek tarih veya zaman. |
return bool |
echo Date::check('2017-01-30');
true
echo Time::check('23:11');
true
# Now
Veritabanı datetime kolonuna uygun Y-m-d H:i:s biçimi çıktı üretir.
return string |
Kullanımı
echo Date::now();
2019-02-21 20:00:00
# Quarter [8.0.0][2023-01-03]
Güncel tarihin veya belirtilen tarihin hangi çeyrekte olduğunu belirtir.
string $datetime = NULL | Kontrol edilecek tarih. Boş bırakılırsa güncel tarih kabul edilir. |
return int |
Kullanımı
output( Date::quarter('2017-03-30') ); output( Date::quarter('2017-05-30') );
12
[string $datetime]
Bu parametrenin boş geçilmesi durumunda güncel tarih dikkate alınır. Güncel tarih 2023-01-30 kabul edilirse;
output( Date::quarter() );
11. ay ilk çeyrekte olduğu için 1 çıktısı elde edilir.
# DayCount [8.1.0][2023-03-07]
Güncel tarihin veya belirtilen tarihin ilgili ay içinde kaç gün bulunduğu bilgisini verir.
string $datetime = NULL | Kontrol edilecek tarih. Boş bırakılırsa güncel tarih kabul edilir. |
return int |
Kullanımı
output( Date::dayCount('2017-03-30') );
31
# lMethods [8.0.0][2023-01-03]
Tarih metinleri İngilizce çıktılanmaktadır. Bu yöntem sayiesinde çıktının Lang::set() ile ayarlanan sistem diline göre çıktı üretmesi ya da istenilen durumda istenilen dile göre çıktı üretmesi artık mümkün. Hangi yöntem kullanılacaksa dile duyarlı olması için yöntemin başına [ l ] (le) harfi eklenmelidir.
mixed ...$parameters | İlgili yönteme ait parametreler... | ||
string $lang = DEFAULT |
Standart parametre diziliminden sonra kullanılır. Bu parametre belirtilmezse sistemin diline göre çıktı üretir. | ||
Kullanılabilir Seçenekler | tr, en | Bu seçenekleri genişletmek için: Settings/Expressions.php dosyasında yer alan 'date' dizisi kullanılabilir. | |
return int |
Kullanımı
output( Date::set('{day}') ); # Monday output( Date::lset('{day}', 'tr') ); # Pazartesi
MondayPazartesi
[string $lang]
Bu parametre belirtilmez ise Config/Project.php dosyasında yer alan 'language' anahtarına göre çıktı üretecektir.
output( Date::lset('{day}') ); # Monday
Monday
# Locale
Yereli ayarlar. Kullanımı setlocale(LC_ALL, ...$parameters) gibidir.
string ...$parameters | Yerel parametreleri. |
return this |
Kullanımlar
Time::locale('en_US.UTF-8');
# Zone
Saat dilimini ayarlar. Kullanımı timezone() gibidir.
string $zone | Geçerli bölge adı |
return this |
Kullanımlar
Time::zone('America/Toronto');
# IsDay
Bugünün hangi gün olup olmadığını kontrol eder. Bu yöntem çağrılabilir gün isimlerini içerebilir.
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.
echo Date::isMonday(); # true or false.
# IsMonth
Bu ayın hangi ay olup olmadığını kontrol eder. Bu yöntem çağrılabilir ay isimlerini içerebilir.
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.
echo Date::isJune(); # true or false.
# IsWeekend
Bugün veya belirli bir tarihin hafta sonuna denk gelip gelmediğini kontrol eder.
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
Bugünün veya belirtilen tarihin hangi gün olduğunu bilgisini verir.
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
Bugünün veya belirtilen tarihin ayın kaçıncı günü olduğunu bilgisini verir.
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
Bugünün veya belirtilen zamanın belirtilen türe (gün, ay, yıl...) göre sonraki değerini verir.
string $date = NULL |
Bu parametrenin boş geçilmesi durumunda bugünün aksi halde belirlenen tarih veya zamanın kontrolünü yapar. |
return string |
Tarih Kullanımları
output( Date::nextDay() ); # Monday
output( Date::nextDayNumber() ); # 4
output( Date::nextDayNumber('2018/01/15') ); # 16
output( Date::nextMonth() ); # July
output( Date::nextMonth('2018/01/15') ); # February
output( Date::nextMonthNumber() ); # 7
output( Date::nextMonthNumber('2018/01/15') ); # 2
output( Date::nextYear() ); # 2019
output( Date::nextYear('2018/01/15') ); # 2019
Zaman Kullanımları
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
Bugünün veya belirtilen zamanın belirtilen türe (gün, ay, yıl...) göre önceki değerini verir.
string $date = NULL |
Bu parametrenin boş geçilmesi durumunda bugünün aksi halde belirlenen tarih veya zamanın kontrolünü yapar. |
return string |
Tarih 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
Zaman Kullanımları
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
Bugünün veya belirtilen zamanın belirtilen türe (gün, ay, yıl...) göre aynı türden değer ekler.
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. |
int $count = 1 | Hesaplamaya dahil edilecek değer. |
return string |
Tarih 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
Zaman Kullanımları
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
Tarih ve Zaman Kullanımları
Şayet tarih ve saat içeren bir veriye işlem yapacaksanız Date:: kütüphanesini kullanın.
output( Date::addHour('2023/01/17 14:00', 2) ); # 2023-01-17 16:00
# Remove
Bugünün veya belirtilen zamanın belirtilen türe (gün, ay, yıl...) göre aynı türden değer çıkartır.
Parametreler
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. |
int $count = 1 | Hesaplamaya dahil edilecek değer. |
return string |
Tarih 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
Zaman Kullanımları
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
Tarih ve Zaman Kullanımları
Şayet tarih ve saat içeren bir veriye işlem yapacaksanız Date:: kütüphanesini kullanın.
output( Date::removeHour('2023/01/17 14:00', 2) ); # 2023-01-17 12:00
# Diff
Bugünün veya belirtilen zamanın belirtilen diğer tarih ile belirtilen türe(gün, ay, yıl) göre farkını hesaplar.
string $oldDate | 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. |
string $newDate = 'Y-m-d H:i:s' |
Farkı hesaplanacak diğer tarih veya zaman bilgisi. |
return float |
Biçim
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. |
Tarih 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
Zaman Kullanımları
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
Bu kütüphane ortak bir tarih/zaman verisi üzerinde yukarıdaki 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
Biçimlendirme
Çı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