quando crei la data devi tener presente che il mese va da 0 a 11.
var tmp = new Date(1991, 01, 29); // 29 febbraio 1991 ??? non esiste, automaticamente trasformato in 1 marzo 1991
var data2 = new Date(tmp.getFullYear(), tmp.getMonth()-1, tmp.getDate());
// passaggio intermedio:
var data2 = new Date(1991, 2 -1, 1); // quindi 1 febbraio 1991
Non mi risulta che la terza data restituita, nonostante l'errore concettuale, sia sbagliata![]()