This is by design. The constructor DateTimethat you use allows you to overflow and overflow both days and months. A monthly value of less than one means the month until January, which is the month of the previous year. Similarly, a day value of less than one day is the day in the previous month.
source
share