I adapted @kglr answer to fit generalize number of regions. I omitted the doting requirements and others.
Unfortunately , a small line appears on the x axis in the fillings. If you know how to fix it, let me know.
DatePlotRegions[data1_, dateintervals_] := DateListPlot[ Join[ {data1}, {data1}, Thread[{#, 0Max[data1]*70}] & /@ dateintervals], Filling -> Tuples[Range[3, Length[dateintervals] + 3] -> {Top, Bottom}], FillingStyle -> Opacity[.3], PlotLegends -> {Placed[ SwatchLegend[ Opacity[.3, ColorData[97]@#] & /@ Range[3, Length[dateintervals] + 3], Row[DateObject /@ #, "-"] & /@ dateintervals, LegendMarkerSize -> 0]10], Right]}, PlotRange -> {{MinDate[#], MaxDate[#]} &@ data1, (MinMax@data1) + {(-0.12)* Abs[Max[Min[data1], Max[data1] - Min[data1]]], 0.12*Abs[Max[Max[data1], Max[data1] - Min[data1]]]} }] 