Another option,
1] Assume your holiday list in range D2:D11
2] In B2, formula copy down :
=IFERROR(IF((LEFT(TEXT(A2,"ddd"))="S")+ISNUMBER(MATCH(INT(A2),$D$2:$D$11,0)),LOOKUP(HOUR(A2),{0;7;22},{"Off peak";"Shoulder";"Off peak"}),LOOKUP(HOUR(A2),{0;7;14;20;22},{"Off peak";"Shoulder";"Peak";"Shoulder";"Off peak"})),"")
Regards