Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Calcolo anni in base a data di nascita

    Già il titolo dice tutto. Quale è loscript per calcolare gli anni in base a una data di nascita?
    Spero qualcuno mi aiuti.
    Ciao Davide

  2. #2
    In Asp

    DataNascita = "25/12/1986"
    (per inserire il dato devi usare un form o lo recuperi da un db)
    AnnoAttuale = DatePart("yyyy", Date())
    AnnoNascita = DatePart("yyyy", Date(DataNascita))
    TuoiAnni = (AnnoAttuale - AnnoNascita)

  3. #3
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao a tutti,

    io ti faccio un esempio in javascript (con il controllo che la data inserita sia una data valida e nel formato gg/mm/aaaa)
    codice:
    <script language="javascript">
    function anni(ff){
    	strData = ff.datanascita.value
    	RE = /^\d{1,2}\/\d{1,2}\/\d{4}$/
    	if(RE.test(strData)){
    		aData = strData.split('/')
    		aData[0] = parseInt(aData[0],10)
    		aData[1] = parseInt(aData[1],10)-1
    		aData[2] = parseInt(aData[2],10)
    		data = new Date(aData[2],aData[1],aData[0])
    		if(data.getDate()==aData[0] && data.getMonth()==aData[1] && data.getFullYear()==aData[2]){
    			oggi = new Date()
    			dif = oggi.getTime()-data.getTime()
    			divisore = (1000*60*60*24*365)
    			anni = Math.round(dif/divisore)
    			alert('anni in javascript = '+anni)
    			return true
    		}
    		else{
    			alert('Data non valida')
    			return false
    		}
    	}
    	else{
    		alert('Formato data non valido')
    		return false
    	}
    }
    </script>
    <form>
    <input type="text" name="datanascita">
    <input type="button" value="anni" onclick="anni(this.form)">
    </form>
    in ASP senza ricavare l'anno dalle date e poi fare la differenza si può usare direttamente
    DateDiff("yyyy",data1,data2)

  4. #4
    Utente bannato
    Registrato dal
    Apr 2003
    Messaggi
    1,119
    a me dice 1 anno in più...

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Originariamente inviato da web ces
    a me dice 1 anno in più...
    questione di arrotondamenti... :gren:

  6. #6
    Utente bannato
    Registrato dal
    Apr 2003
    Messaggi
    1,119
    cioè?

  7. #7
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    pippo è nato il 10/6/1985 e oggi è il 9/6/2003
    pippo ha 18 anni per lo script che ho fatto... in realtà i 18 anni li farà domani... visto che non tutti gli anni sono di 365 giorni si potrebbe fare così
    codice:
    function anni(ff){
    	strData = ff.datanascita.value
    	RE = /^\d{1,2}\/\d{1,2}\/\d{4}$/
    	if(RE.test(strData)){
    		aData = strData.split('/')
    		aData[0] = parseInt(aData[0],10)
    		aData[1] = parseInt(aData[1],10)-1
    		aData[2] = parseInt(aData[2],10)
    		data = new Date(aData[2],aData[1],aData[0])
    		if(data.getDate()==aData[0] && data.getMonth()==aData[1] && data.getFullYear()==aData[2]){
    			oggi = new Date()
    			oggi = new Date(oggi.getFullYear(),oggi.getMonth(),oggi.getDate())
    			compleanno = new Date(oggi.getFullYear(),aData[1],aData[0])
    			dif = oggi.getTime()-compleanno.getTime()
    			divisore = (1000*60*60*24)
    			giorni = parseInt(dif/divisore)
    			anni = oggi.getFullYear()-data.getFullYear()
    			anni=(giorni<0)?anni-1:anni
    			alert(compleanno+'\n'+oggi+'\nanni in javascript = '+anni)
    			return true
    		}
    		else{
    			alert('Data non valida')
    			return false
    		}
    	}
    	else{
    		alert('Formato data non valido')
    		return false
    	}
    }

  8. #8

    X ZOCCHI

    Innanzi tutto grazie dell'aiuto a tutti.
    Zocchi io nel tuo codice vorrei chiarimenti.
    Io ho il campo giorni, mese e anno separati e quindi tre campi nel database. Come recuperarli nel tuo cosice? e poi cosa va messo al posto delle yyyy?

    Spero mi rispondi presto.
    Ciao Davide

  9. #9
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    non sono zocchi però...

    se devi farlo in ASP
    codice:
    data = DateSerial(rs("anno"),rs("mese"),rs("giorno"))
    Response.Write "anni in ASP = " & DateDiff("yyyy",data,now)
    "yyyy" è proprio "yyyy"











    p.s.
    per domande riguardanti ASP esiste il forum ASP

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.