The proper way to prohibit this is found on the schedule portion of each job. Edit your job and check the schedule node. On this node you will see an option called "Time Window". This controls when the job can start, and the latest time that it can start.
For instance, if you put in Start no earlier than 12:01am and no later than 4:00am, the you would provide it with a 4 hour window. If the job starts at 3:59am then it will run until completion, however if it tried to start at 4:01am then it would be skipped and rescheduled to it's nexct schedule date/time. The "no later than" setting should be set to give enough time to complete if it did start simply a minute before. So in my case, I use the 4am setting because I need to make sure jobs are done prior to 8am when it gets busy.
There is also an automatic job cancellation setting located on the Priority and Availability node. This setting would allow you to cancel any job which goes over x amount of time. If needed, you could couple this setting with the above settings to guarantee the job is done at a specific time.
Hope this helps.