Bugün Flutter/Dart üzerinde daha demin otel sistemleri için yazdığım iki zaman dilimi verilen kodda nasıl arasındaki günü bulacağımızı göstereceğim.
Öncelikle fonksiyonu oluşturarak başlayalım.
Bu fonksiyon içerisine bir tane int değeri iki tane de timestamp değeri alacaktır.
if değerini kullanarak iki zaman diliminin de boş olmadığından emin olacağız. Yoksa değer "null" gelebilir, bu da fonksiyonumuzu bozacaktır, çünkü fonksiyon sadece int değerini geri dönüş değeri olarak alıyor.
Başlangıçta iki değer vermiştik, giriş ve çıkış diye. Ben bir otel ücreti hesaplama uygulaması yaptığım için giriş günü ile çıkış günü arasındaki gün sayısını bulmaya çalışıyordum. Timestampler ile işlem yapacaksanız, genellikle en son değer üzerinden hesabınızı yapmanız lazım. Bu durumda benim tüm işlemleri "cikis" değeri üzerinden yapmam lazım. "cikis.difference(giris)", herhangi bir Timestamp ile birlikte difference fonksiyonunu çalıştırabilirsiniz. Bu fonksiyonun içerisine eklediğiniz diğer timestamp ile karşılaştırma yapacaktır. Daha sonrasında bu fonksiyona ne üzerinden çalışacağını belirtmemiz gerekiyor. Ben de bu durumda ".inDays" ile birlikte arasındaki gün farkını çıkartmasını istedim.
NOT: Dikkat ederseniz "ucret" değişkeninin sonunda ! işareti var. Bunun sebebi kod kendini çalıştırmadan önce ucret değerinin boş olup olmadığını kontrol ediyor. Eğer boş ise kodu devam ettirmiyor.
Burada ise eğer iki zaman dilimi arasındaki gün sayısı sıfır ise direkt anaparayı göndermesini istedik. Yalnız yukarıdaki kod üzerinde ucret değerinin boş olup olmadığını kontrol ettiğimizden burada etmemize gerek yok, bu yüzden ucret değişkenin sonunda ! işareti yok.
TAM KOD:
Öncelikle fonksiyonu oluşturarak başlayalım.
JavaScript:
int? zamanHesaplama(
int? ucret,
DateTime? giris,
DateTime? cikis,
)
Bu fonksiyon içerisine bir tane int değeri iki tane de timestamp değeri alacaktır.
JavaScript:
if (giris != null && cikis != null)
if değerini kullanarak iki zaman diliminin de boş olmadığından emin olacağız. Yoksa değer "null" gelebilir, bu da fonksiyonumuzu bozacaktır, çünkü fonksiyon sadece int değerini geri dönüş değeri olarak alıyor.
JavaScript:
var base = ucret! * cikis.difference(giris).inDays;
Başlangıçta iki değer vermiştik, giriş ve çıkış diye. Ben bir otel ücreti hesaplama uygulaması yaptığım için giriş günü ile çıkış günü arasındaki gün sayısını bulmaya çalışıyordum. Timestampler ile işlem yapacaksanız, genellikle en son değer üzerinden hesabınızı yapmanız lazım. Bu durumda benim tüm işlemleri "cikis" değeri üzerinden yapmam lazım. "cikis.difference(giris)", herhangi bir Timestamp ile birlikte difference fonksiyonunu çalıştırabilirsiniz. Bu fonksiyonun içerisine eklediğiniz diğer timestamp ile karşılaştırma yapacaktır. Daha sonrasında bu fonksiyona ne üzerinden çalışacağını belirtmemiz gerekiyor. Ben de bu durumda ".inDays" ile birlikte arasındaki gün farkını çıkartmasını istedim.
NOT: Dikkat ederseniz "ucret" değişkeninin sonunda ! işareti var. Bunun sebebi kod kendini çalıştırmadan önce ucret değerinin boş olup olmadığını kontrol ediyor. Eğer boş ise kodu devam ettirmiyor.
JavaScript:
if (base == 0) {
var anapara = ucret;
return anapara;
} else {
var anapara = base;
return anapara;
}
Burada ise eğer iki zaman dilimi arasındaki gün sayısı sıfır ise direkt anaparayı göndermesini istedik. Yalnız yukarıdaki kod üzerinde ucret değerinin boş olup olmadığını kontrol ettiğimizden burada etmemize gerek yok, bu yüzden ucret değişkenin sonunda ! işareti yok.
TAM KOD:
Kod:
int? gunFarki(
int? ucret,
DateTime? giris,
DateTime? cikis,
int? servis,
) {
// her iki zaman dilimi de verilmişse, aradaki günleri hesapla ve ucret değişkeniyle çarp
if (giris != null && cikis != null) {
var base = ucret! * cikis.difference(giris).inDays;
if (base == 0) {
var anapara = ucret + servis!;
return anapara;
} else {
var anapara = base + servis!;
return anapara;
}
} else {
var anapara = ucret! + servis!;
return anapara;
}
// CidQu
}