Hola,
Según entiendo, el único problema es chequear años bisiestos (febrero 29 días), ya que en lo demás todos los meses tienen la misma duración.
Mira esta página donde se explica lo de los años bisiestos y tiene una función en javascript para chequear si un año lo es o no.
http://www.astrogea.org/foed/efemerides/bisiesto.htm