Логика такая - если есть такой же день, то этот день. Если нет, то последний день месяца.
29->29 30->30 31->30
Пример для январь=>февраль
01.27=>02.27 01.28=>02.28 01.29=>02.28 01.30=>02.28 ..
Это как с natsort - та же сортировка, но с более удобной для человека логике.