But there are only 24 hours in a day. What should DateTime do with "hour => 24"?
It should be the beginning of the next day, of course (i.e. 00.00 on the next day).
As ISO 8601 defines T2400, people might expect that behaviour.
Try this: DateTime->new( ..., hour => $hour % 24, ... );
That's one day off.
Claus