if you need performance, you can save on creating ...
# random
o
if you need performance, you can save on creating intermediate DateRange by storing start/end separately