Just to be clear to future readers, this is the behavior of the 1.9 version Astro Binding. The 2.0 version binding uses Event Trigger Channels to trigger rules.
Conceptually I agree. However, there is unfortunately nothing preventing you from postUpdating to change a Contact or from just checking and simply refraining from sendCommand to the Switch.
As for the best way, I recommend this which can be expanded to any number of time periods over a day and can be expanded to handle changes based on day type (e.g. weekends use different time periods from work days).