-
Calcolo dell'etå
Salve a tutti, avrei bisogno di un aiutino con un codice...
nel mio sito ho bisogno di calcolare l'età anagrafica (precisa fino al giorno) partendo dal codice fiscale.....
io sono riuscito ad ottenere la data di nascita in formato gg/mm/aaaa, ma adesso...dalla data come faccio ad ottenere l'età?
codice sulla prima pagina:
Codice:
<script type="text/javascript">
function getDataByCF(cf) {
var tabellamesi = {
"A" : "01",
"B" : "02",
"C" : "03",
"D" : "04",
"E" : "05",
"H" : "06",
"L" : "07",
"M" : "08",
"P" : "09",
"R" : "10",
"S" : "11",
"T" : "12"
};
return cf.replace(/^(?:\w{6})(\d{2})(\w)(\d{2}).+$/, function(data, aa, mm, gg) {
var anno = parseInt(aa, 10);
var secolo = (anno < 9)? '20':'19';
anno = [secolo, aa].join('');
var giorno = parseInt(gg, 10);
var sesso = (giorno > 31)? 'F' : 'M';
if (sesso === 'F') giorno -= 40;
var mese = mm.toUpperCase();
mese = tabellamesi[mese];
return [giorno, mese, anno].join("/");
});
};
</script>
Codice HTML:
<form name="form" action="echo.php" method="post">
<p>CF
<input type="text" name="cf"
onblur="document.getElementById('nato').value = getDataByCF(this.value);"
onkeyup="this.value = this.value.toUpperCase();"/>
Nato <input name="nato" type="text" id="nato" readonly="readonly"/>
</p>
<p>
<input type="submit" name="submit" value="EFFETTUA IL LOGIN!" />
</p>
</form>
CODICE DELLA SECONDA PAGINA (INTERROGAZIONE)
Codice PHP:
<?php
session_start();
$codicefiscale=$_POST['cf'];
$data_nascita=$_POST['nato'];
echo $codicefiscale;
echo"<br>";
echo $data_nascita;
?>
<?php
-
in PHP avendo la data del CF e la data odierna puoi fare:
Codice PHP:
<?php
$mydate=getdate();
$dataOdierna = $mydate[year]+$mydate[month]+$mydate[mday];
$dataCF = "1994-01-01";
$date1=date_create($dataOdierna);
$date2=date_create($dataCF);
$diff=date_diff($date1,$date2,true);
echo "<br>anni ";
echo $diff->y;
echo "<br>mesi ";
echo $diff->format("%m");
echo "<br>giorni ";
echo $diff->format("%d");
?>
-
ho provato ma l'output è errato...
data di nascita: 28/7/1996
output:
anni 20
mesi 8
giorni 9
-
Hai impostato la data nel formato
Codice:
$dataCF = "ANNO-MESE-GIORNO";
-
e quindi? come devo modificarlo?
-
Quando estrapoli la data dal CF la assegni alla variabile PHP $dataCF nel formato da me indicato.
Per esempio (riferendomi al post#3)
Codice:
$dataCF = "1996-07-28";
ecco un DEMO
-
si è già così....
$dataCF = "1994-1-1";
-
il formato deve essere anno 4 cifre mese due cifre giorno due cifre , quindi 1994-01-01
scusa ho visto adesso che nell'esempio php che ti avevo riportato non avevo scritto bene la data...
-
continua a non funzionare =(
-
? con il DEMO che ti ho postato a me funziona...
-
la tua demo mi restituisce questo errore: Fatal error: Call to a member function format() on a non-object in /membri/nlsweb/esempi/datePHP.php on line 16
-
a me la demo funziona.
Se inserisco 1996-07-28 ricevo come risultato:
anni 18
mesi 1
giorni 13
Sei sicuro di inserire la data nel modo corretto?
-
lol sbagliavo a scrivere scusa...
quindi come devo fare sul mio codice?
sei nato il 28 luglio?
-
il mio problema è che....l'estrazione della data dal codice fiscale è con formato: gg/mm/aaaa....per lo script server aaaa/mm/gg.....come faccio ad invertirlo?
-
Ho creato anche un DEMO con JS , ma il conteggio non e' molto preciso e non ho ancora capito il perche'.. ci sto lavorando..
comunque , questo e' il codice:
Codice HTML:
<!DOCTYPE html>
<html>
<head>
<script>
function calcolaETA() {
var annoCF = document.getElementById('anno').value;
var meseCF = document.getElementById('mese').value;
var giornoCF = document.getElementById('giorno').value;
var dataCF = new Date(annoCF+","+meseCF+","+giornoCF);
var millisecondi = Date.now() - dataCF.getTime();
var eta = new Date(millisecondi);
var anni = Math.abs(eta.getUTCFullYear() - 1970);
var mesi = Math.abs(eta.getUTCMonth());
var giorni = Math.abs(eta.getUTCDate());
var risultato = "Anni: "+anni+" , Mesi: "+mesi+" , Giorni: "+giorni;
document.getElementById("risultato").innerHTML = risultato;
}
</script>
</head>
<body>
Inserisci la data di nascita
Anno(AAAA):<input type="date" id="anno"/>
Mese(MM):<input type="date" id="mese"/>
Giorno(GG):<input type="date" id="giorno"/>
<button onclick="calcolaETA()">Calcola</button>
<div id="risultato"></div>
</body>
</html>
-
sono riuscito grazie mille