A package for finding overlappings between given time ranges.
The type of time ranges to compare must be either TimeOfDayRange, which is created for this package, or DateTimeRange, which is provided by Flutter.
-
TimeOfDayRange
import 'package:overlapping_time/overlapping_time.dart'; void main() { // 01:00 - 04:00 final TimeOfDayRange rangeA = TimeOfDayRange( start: TimeOfDayRange(hour: 1, minute: 0), end: TimeOfDayRange(hour: 4, minute: 0), ); // 02:00 - 05:00 final TimeOfDayRange rangeB = TimeOfDayRange( start: TimeOfDayRange(hour: 2, minute: 0), end: TimeOfDayRange(hour: 5, minute: 0), ); // 03:00 - 06:00 final TimeOfDayRange rangeC = TimeOfDayRange( start: TimeOfDayRange(hour: 3, minute: 0), end: TimeOfDayRange(hour: 6, minute: 0), ); final List ranges = [rangeA, rangeB, rangeC]; final Map<int, List<ComparingResult>> searchResults = findOverlap(ranges: ranges); // Extract range that all 3 ranges overlap with each other final TimeOfDayRange overlappingRange = searchResults[3].first.overlappingRange; print(overlappingRange); }
Output
TimeOfDay(3:00) - TimeOfDay(04:00) -
DateTimeRange
import 'package:overlapping_time/overlapping_time.dart'; void main() { // 2020-1-1 01:00 - 2020-1-1 04:00 final DateTimeRange rangeA = DateTimeRange( start: DateTime(2020, 1, 1, 1, 0), end: DateTime(2020, 1, 1, 4, 0), ); // 2020-1-1 02:00 - 2020-1-1 05:00 final DateTimeRange rangeB = DateTimeRange( start: DateTime(2020, 1, 1, 2, 0), end: DateTime(2020, 1, 1, 5, 0), ); // 2020-1-1 03:00 - 2020-1-1 06:00 final DateTimeRange rangeC = DateTimeRange( start: DateTime(2020, 1, 1, 3, 0), end: DateTime(2020, 1, 1, 6, 0), ); final List ranges = [rangeA, rangeB, rangeC]; final Map<int, List<ComparingResult>> searchResults = findOverlap(items: ranges); // Extract range that all 3 ranges overlap with each other final DateTimeRange overlappingRange = searchResults[3].first.overlappingRange; print(overlappingRange); }
Output
2020-01-01 03:00:00.000 - 2020-01-01 04:00:00.000
Coffee keeps me on fire :)