Per il mese, i numeri restituiti partono da 0, per questo ti trovi un mese di differenza, dovresti aggiungere un +1 al calcolo del mese. Mentre per i giorni, il "getDay" restituisce il giorno corrispondente alla settimana, quindi ad esempio 1 per lunedì, 2 per martedì e così via. Per farti restituire il giorno come numero del mese devi usare getDate().