Bu yazımda CSS'in genişletilmiş bir versiyonu olan SASS (Syntactically Awesome Style Sheets)'ı ele alacağım. CSS yazma deneyimini geliştiren ve stil tabanlı projelerde daha...
JavaScript Tarih Dönüştürme ve Sıralama İşlemi
Verilerimiz bazen farklı farklı tablolar üzerinden alınarak bir araya geldiğinde anlam kazanır. Farklı tablolardan veri almamız sonucunda bazı işlemleri yapmak zor olabilir ya da bu durum performansı etkileyebilir. Bunun için en son hazır veri üzerinden JS ile bazı işlemleri yapmamız daha basit ve hızlı çözümler üretmemizi sağlar. Ben yaşadığım bir durum üzerinden anlatmak istiyorum. Mevcut yapmak istediğim olay tarihleri eskiden en yeniye olacak şekilde sıralamak. Boş olan tarih verisi de en sonda olması gerekiyor. Şimdi bu durum göz önüne alındığında kullanıcı listesinde tarih bilgisi var. Fakat bu tarih bilgisi başka başka tablolar üzerinden gelmekte. Durum bu olunca aklıma ilk gelen çözüm olan JS ile sıralama işlemi yapmayı düşündüm.
Problem
Ama bu veri listesinde ilk sorun tarih değeri string olarak geliyor olması. Sonraki sorun ise bazı tarihlerin sonunda saat bilgisinin olması. Saat bilgisi olduğunda yanlış sıralamaya sebep oluyor. Şimdi bu durumları nasıl çözdüğümü bir bakalım.
Çözüm
Sıralama işlemi yapabilmek için veri listesi içinde tarihleri birbirleri ile karşılaştırmamız gerekiyor. Bunun için ilk tarih bilgisi için firstDate ve ikinci tarih bilgisi için de secondDate tanımlamaları yaptım. Gelen tarih bilgisinde her ikisi için de replace ile 00:00 değerinin olması halinde bunu boş olarak değiştirme işlemi yaptım. Yeni tarih değeri için firstEndsOn ve secondEndsOn tanımlaması yaptım. Sonrasında ise tarih bilgisine split yardımı ile parçaladım. Döngüye sokarak her değeri gün , ay ve yıl olacak şekilde atadım. İkinci tarih bilgisi için de aynı şeyi yaptım. Tarih için gün, ay ve yıl parametrelerini birleştirerek tarih formatında istediğim yeni bir tarih değerine ulaştım.
Son olarak:
if (firstNewDate < secondNewDate) { return -1; }
if (firstNewDate > secondNewDate) { return 1; }
satırları ile sıralama işlemini tamamlamış oldum. Sayfanızda gerekli yer için bu şekilde bir mantık ile sıralamanızı yapabilirsiniz.
userList.sort(function (firstDate, secondDate) { if (firstDate.EndsOn != "" || secondDate.EndsOn != "") { //Saat bilgisini kaldırma firstEndsOn = firstDate.EndsOn.replace(" 00:00", ""); secondEndsOn = secondDate.EndsOn.replace(" 00:00", "");
//Noktaya göre tarihi parçalama işlemivar firstSplit = firstEndsOn.split("."); var fDD; var fMM; var fYYYY; //Tarih dizisini döngüye sokup gün, ay ve yıl atamasını yaptık for (i = 0; i < firstSplit.length; i++) { if (i == 0) fDD = firstSplit[i]; if (i == 1) fMM = firstSplit[i]; if (i == 2) fYYYY = firstSplit[i]; } //Elde edilen parametreler ile tarih formatı oluşturma var firstNewDate = fYYYY + "/" + fMM + "/" + fDD;
var secondSplit = secondEndsOn.split("."); var sDD; var sMM; var sYYYY; for (i = 0; i < secondSplit.length; i++) { if (i == 0) sDD = secondSplit[i]; if (i == 1) sMM = secondSplit[i]; if (i == 2) sYYYY = secondSplit[i]; } var secondNewDate = sYYYY + "/" + sMM + "/" + sDD;
//İki tarih arasında sıralama yapmaif (firstNewDate < secondNewDate) { return -1; } if (firstNewDate > secondNewDate) { return 1; } } return 0; });
Umarım faydalı olmuştur. İyi çalışmalar dilerim.
Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.