Δεδομένου ότι υπάρχουν δύο εύρη ημερομηνιών, ποιος είναι ο απλούστερος ή ο πιο αποτελεσματικός τρόπος για να προσδιοριστεί αν τα δύο εύρη ημερομηνιών επικαλύπτονται;
Για παράδειγμα, ας υποθέσουμε ότι έχουμε περιοχές που συμβολίζονται με τις μεταβλητές DateTime StartDate1
έως EndDate1
και StartDate2
έως EndDate2
.
Πιστεύω ότι αρκεί να πούμε ότι οι δύο περιοχές επικαλύπτονται εάν:
(StartDate1 <= EndDate2) and (StartDate2 <= EndDate1)
Θα έκανα
StartDate1.IsBetween(StartDate2, EndDate2) || EndDate1.IsBetween(StartDate2, EndDate2)
Όπου το IsBetween
είναι κάτι σαν
public static bool IsBetween(this DateTime value, DateTime left, DateTime right) {
return (value > left && value < right) || (value < left && value > right);
}
Ο ευκολότερος τρόπος για να το κάνετε κατά τη γνώμη μου θα ήταν να συγκρίνετε αν είτε η EndDate1 είναι πριν από την StartDate2 είτε η EndDate2 είναι πριν από την StartDate1.
Αυτό βέβαια αν εξετάζετε διαστήματα όπου η StartDate είναι πάντα πριν από την EndDate.