Ciao
Lavorando in JS per creare una data uso questa forma, che sinora ha sempre funzionato:
codice:
var tmp = new Date(1947, 1, 12);
var data1 = new Date(tmp.getFullYear(), tmp.getMonth()-1, tmp.getDate());
document.write(data1.toLocaleDateString())
che quando vado a stampare mi restituisce la giusta data 12/1/1947.
Ora ho un problema con questo piccolo script:
codice:
function calculateAge(birthday, now) {
var nowYear = now.getFullYear();
var birtYear = birthday.getFullYear();
var age = nowYear - birtYear;
return age;
}
var oggi = new Date();
var tmp = new Date(1947, 1, 12);
var data1 = new Date(tmp.getFullYear(), tmp.getMonth()-1, tmp.getDate());
var tmp = new Date(1991, 01, 29);
var data2 = new Date(tmp.getFullYear(), tmp.getMonth()-1, tmp.getDate());
var tmp = new Date(1963, 08, 28);
var data3 = new Date(tmp.getFullYear(), tmp.getMonth()-1, tmp.getDate());
var eta1 = calculateAge(data1, oggi);
var eta2 = calculateAge(data2, oggi);
var eta3 = calculateAge(data3, oggi);
document.write("tra " + oggi.toLocaleDateString() + " e "
+ data1.toLocaleDateString() + ":<br />")
document.write(eta1 + " anni<br />");
document.write("tra " + oggi.toLocaleDateString() + " e "
+ data2.toLocaleDateString() + ":<br />")
document.write(eta2 + " anni<br />");
document.write("tra " + oggi.toLocaleDateString() + " e "
+ data3.toLocaleDateString() + ":<br />")
document.write(eta3 + " anni<br />");
che mi restituisce:
tra 27/1/2016 e 12/1/1947:
69 anni
tra 27/1/2016 e 1/2/1991:
25 anni
tra 27/1/2016 e 27/8/1963:
53 anni
Gli anni restituiti immagino che siano giusti ma ho problema con le date che mi vengono restituite.
La prima data (12/1/1947) è giusta
La seconda e la terza data sono sbagliate e non riesco a capirne il motivo.
La seconda data restituita è 1/2/1991 invece di 29/1/1991.
La seconda data restituita è 27/8/1963 invece di 28/8/1963.
Il codice mi sembra corretto, ma non riesco a capire questi errori.
Grazie se riuscirete a farmi superare questo errore.