İpucu

İki Tarih Aralığının Kesişip Kesişmediği

Elimizde iki tarih aralığı olsun. Bu tarih aralıklarının kesişip kesişmediğini veren yöntem aşağıdaki gibi yapılabilir:
public static boolean overlap(Date start1, Date end1,
		Date start2, Date end2) {
	
	return (end2 == null || start1 == null || !start1.after(end2))
			&& (end1 == null || start2 == null || !end1.before(start2));
	
}
Herhangi bir alan null verilirse de kod çalışır. Eğer tüm alanlar null verilirse yöntem true döndürür.
Yöntemi DateUtil sınıfına statik bir yöntem olarak ekleyip aşağıdaki gibi test kodu yazıp test edebilirsiniz:
@Test
public void testOverlap() {
	
	Date date1=new Date(2018, 1, 1);
	Date date2=new Date(2018, 1, 10);
	
	Date date3=new Date(2018, 2, 1);
	Date date4=new Date(2018, 2, 10);
	
	assertFalse(DateUtil.overlap(date1, date2, date3, date4));
	
	Date date5=new Date(2017, 1, 1);
	Date date6=new Date(2017, 1, 10);
	
	assertFalse(DateUtil.overlap(date1, date2, date5, date6));
	
	Date date7=new Date(2017, 1, 1);
	Date date8=new Date(2018, 1, 1);
	
	assertTrue(DateUtil.overlap(date1, date2, date7, date8));
	
	Date date9=new Date(2017, 1, 1);
	Date date10=new Date(2018, 1, 5);
	assertTrue(DateUtil.overlap(date1, date2, date9, date10));
	Date date11=new Date(2017, 1, 10);
	Date date12=new Date(2018, 1, 12);
	
	assertTrue(DateUtil.overlap(date1, date2, date11, date12));
	
	// no end
	Date date13=new Date(2018, 1, 10);
	assertTrue(DateUtil.overlap(date1, date2, date13, null));
	
	// no start
	Date date14=new Date(2018, 1, 1);
	assertTrue(DateUtil.overlap(date1, date2, null, date14));
	
	// no end no overlap
	Date date15=new Date(2018, 1, 11);
	assertFalse(DateUtil.overlap(date1, date2, date15, null));
	
	// no start no overlap
	Date date16=new Date(2017, 12, 31);
	assertFalse(DateUtil.overlap(date1, date2, null, date16));
	
	// all null
	assertTrue(DateUtil.overlap(null, null, null, null));
}
zafer.teker , 07.03.2020

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir

Misafir Yorumları




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir