Pace that, the list had extensive discussion early on about specifying end-of-month handling when doing date calcs. Hence the 'wrap', 'limit', and 'preserve' modes for the end_of_month parameter in DT::Duration.
Absent such a parameter, no date calculation would be correct in the usual meaning of 'correct'.
I've realised my mistake, and withdraw my request from a few days back. I agree that in date math there should be the right behaviour, however this wasn't in the math it was in a set.
$dt->set( month=>2, day=>30 );
Now you either typed in the wrong thing there or you made a mistake like I did: for (1..12){ $dt->set( month=>$_, day=>30) }
It's right to cause a die there because DT has no idea what I'm doing. I may have entered static value as in the top, or I might be using a rolling variable as in the bottom. If I'm using a rolling value I should be relying on date math, not a for loop.
The fix is as simple as either specifying a day that is in every month, or using date math and just adding a month (with limit or preserve)
Cheers! Rick
-- -------------------------------------------------------- There are 10 kinds of people: those that understand binary, and those that don't. -------------------------------------------------------- The day Microsoft makes something that doesn't suck is the day they start selling vacuum cleaners -------------------------------------------------------- "Write a wise proverb and your name will live forever." -- Anonymous --------------------------------------------------------