I was thinking almost the opposite.. if the event gets set between 1:30 and 3 pm, then nothing happens.
Code:
on *:text:.schedule*:#:{
  if !$3 { .msg $nick Usage: .schedule [length] [start time] }
  else {
    inc %schedule
    set $+(%,schedule.start,%schedule) $ctime($date $$3-)
    if $($+(%,schedule.start,%schedule),2) < $ctime {      inc $+(%,schedule.start,%schedule) 86400    }
    set $+(%,schedule.end,%schedule) $calc($($+(%,schedule.start,%schedule),2) + $duration($2))
  }
  var %a = 1, %b = %schedule
  while %a < %b {
    if $($+(%,schedule.start,%schedule),2) isnum $+($($+(%,schedule.start,%a),2),-,$($+(%,schedule.end,%a),2)) {
      .msg $nick Sorry but your requested schedule time conflicts with a previous schedule
      unset $+(%,schedule.*,%schedule)
      dec %schedule
      halt
    }
    inc %a
  }
}