У меня есть несколько диапазонов дат, каждый с начальной и конечной датой / временем, содержащим одно значение, из которого я хочу создать новые диапазоны, где перекрывающиеся значения диапазонов добавляются к срезу.
Дата / Диапазоны времени следующие:
- [10:00, 10:15] = 7
- [10:10, 10:20] = 9
- [ 10:05, 10:25] = 2
- [11:00, сейчас] = 3
Чтобы проиллюстрировать это лучше, пожалуйста, смотрите следующее изображение (я использовал здесь только раз, для упрощения):
На изображении диапазон дат [10:00, 10:15] содержит значение 7, [10:10 , 10:20] = 9 и т. Д.
Мне нужно сгенерировать следующие диапазоны дат, где перекрывающиеся значения диапазонов объединяются вместе:
- [10:00, 10 : 05] = 7
- [10:05, 10:10] = 7,2
- [10:10, 10:15] = 7,2,9
- [10:15, 10:20] = 2,9
- [10:20, 10:25] = 2
- [10:25, 11:00] = 2 <- - это был зазор, не перекрывающийся и не непрерывный. </li>
- [11:00, сейчас] = 3
Я использовал структуру для представления диапазона
type Range struct {
Start time.Time
End time.Time
Values []int
}
Существует ли простой и эффективный способ сделать это?