You can take advantage of the fact that the Internet headers contain the date in a specific format to write a rule looking for substrings. (I found this idea here.)
The time in an internet header is generally formatted like this:
Received: from somemachine ([someipaddr]) by
anothermachine ([someipaddr]) with mapi id
somerandomstring; Mon, 2 Mar 2020 11:47:59 -0500
So you can create a rule that looks for any of the following strings in the message body:
2020 22:
2020 23:
2020 00:
2020 01:
2020 02:
2020 03:
2020 04:
2020 05:
You'll have to update the rule once every year, but it's a big help.
EDIT: @timothy-law notes in a comment that headers often contain more than one time zone. In my own situation, I was filtering message reports that were generated automatically and internal to my company, so the return path was predictable and never included -0000, so I didn't run in to this.
My solution also will not take notice of Daylight Savings Time. Again, in my case, the goal was to filter away nighttime messages that also had "deployment successful" in them, because 99% of nighttime messages from that app were about successful deployments. So the fact that "nighttime" switched by an hour twice a year didn't bother me there, either.
So yeah, this is brittle and may not work for you, but it's great for a specific circumstance like mine...