mmmmmm
y si validaras el string antes de pasarlo
osea si chechas que si estas en el mes 1,3,5,7,8,10,12 el numero mayo de dias sera 31 y si son el mes 4,6,9,11 el numero sera 30 si es el mes es el 2 sera 28 pero si le aplicas mod al año y sale 0 esto quiere decir que es año bisiesto y sera de 29, esto es lo que se me ocurre en este instante.
espero te sirva de algo