Because that’s how it is implemented - instead of matching each packet against the rule and thus wasting resources as it would never match anyway, the rule is made inactive outside its validity time, so it is not matched at all.
You cannot have a single rule crossing midnight, so you need two rules: