Ciao
Lavorando in JS per creare una data uso questa forma, che sinora ha sempre funzionato:
che quando vado a stampare mi restituisce la giusta data 12/1/1947.codice:var tmp = new Date(1947, 1, 12); var data1 = new Date(tmp.getFullYear(), tmp.getMonth()-1, tmp.getDate()); document.write(data1.toLocaleDateString())
Ora ho un problema con questo piccolo script:
che mi restituisce: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 />");
Gli anni restituiti immagino che siano giusti ma ho problema con le date che mi vengono restituite.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
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.
![]()

Rispondi quotando