Это как бы правильно по определению:
- нулевой день в отличие от первого дает (гипотетический) минус один день
- нулевой месяц в отличие от первого дает (гипотетический) минус один месяц
Возьмите (гипотетическое) 1 января в году 0, вычтите месяц -> 1 декабря в году -1.
Вычтите день -> 30 ноября в году -1
В качестве альтернативы, они могли бы сначала навести порядок, а потом было бы так:
1 января минус 1 день -> 31 декабря -0001, минус 1 месяц -> 30 ноября -0001
Форматировщик явно выполняет связанную проверку, чтобы получить только действительные даты. (Для некоторого определения `` valid '')