Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Calcolo età da data di nascita

    Buongiorno a tutti, premetto che mi sono letto migliaia di post, quì sul forum e in giro per il web, ma non ho ancora trovato uno script funzionante al 100%.

    In pratica, devo ricavare l'età esatta, avendo la data di nascità, Esatta vuol dire che deve tenere conto dei mesi e dei giorni.

    Tramite questo script riesco ad ottenere l'età però non tiene conto dei mesi e giorni.
    Per esempio, immettendo $eta='1990-06-29'
    ottengo 20, mentre dovrebbe essere 19..

    codice:
    function getEta($eta){
    date_default_timezone_set('Europe/Rome'); 
    $now=date('Y'-'m'-'d');
    $diff=(strtotime($eta) - strtotime($now))/86400; 
    $years = $diff/365;
    return (int)$years;
    }
    Spero possiate aiutarmi! Grazie in anticipo

  2. #2

    Re: Calcolo età da data di nascita

    Originariamente inviato da DjRiKyX
    Buongiorno a tutti, premetto che mi sono letto migliaia di post, quì sul forum e in giro per il web, ma non ho ancora trovato uno script funzionante al 100%.

    In pratica, devo ricavare l'età esatta, avendo la data di nascità, Esatta vuol dire che deve tenere conto dei mesi e dei giorni.

    Tramite questo script riesco ad ottenere l'età però non tiene conto dei mesi e giorni.
    Per esempio, immettendo $eta='1990-06-29'
    ottengo 20, mentre dovrebbe essere 19..

    codice:
    function getEta($eta){
    date_default_timezone_set('Europe/Rome'); 
    $now=date('Y'-'m'-'d');
    $diff=(strtotime($eta) - strtotime($now))/86400; 
    $years = $diff/365;
    return (int)$years;
    }
    Spero possiate aiutarmi! Grazie in anticipo
    return floor($years);

  3. #3
    Già provato.. Restituisce sempre 20..

  4. #4
    ciao, forse avrai girato male, io tempo fa trovai degli script js che potevi addirittura provare con un semplice clic sul "vedi la demo".
    ce n'era una che ti diceva eta mesi giorni e mi sa forse pure i minuti di vita che hai! riprova a cercare questa cosa in js, magari capisci il meccanismo e la puoi fare in php.
    ti consiglio il sito di ingargiolasalvatore di js o se ripesco quello che trovai te lo linko
    www.gicchesto.com
    Servizi informatici ed elettronici a 360° per aziende e/o privati.

  5. #5
    ho uno script in js che funziona e lo uso per lo stesso scopo.. il meccanismo è lo stesso, solamente che fa il lavoro meglio di php.. xD

    quì lo script.. se magari a qualcuno può interessare.. non si sa mai..

    codice:
    function getDiff(date1, date2){
    msPerDay = 86400000;
    datea = new Date(date1);
    dateb = new Date(date2);
    difference = datea.getTime() - dateb.getTime()
    days= Math.floor((datea-dateb)/ msPerDay)
    echo (days/365);
    }
    
    //Utilizzo
    getDiff('aaa/mm/dd','aaaa/mm/dd');
    l'unica cosa diversa che ho notato èche js fa il calcolo dei secondi, mentre php i giorni
    e poi è diversa la funzione floor()

    per il resto sono identici

  6. #6

    Re: Calcolo età da data di nascita

    codice:
    function getEta($eta = '28 aprile 1987'){
    date_default_timezone_set('Europe/Rome');
    return floor((time() - strtotime($eta)) / 31570560);
    }

  7. #7
    Grazie, ora funziona, restituisce 19, nel mio caso, però, non tiene comunque conto dei giorni.. o meglio, ne tiene conto ma lo fa in modo sbagliato.

    Esempio: se metto 1990-12-14 mi restituisce 18 (dovrebbe dare 19, visto che siamo al 16)
    c'è un margine d'errore di 3 giorni, perchè mettendo 1990-12-13 da 19..

    Come risolvo? a me serve preciso, perchè devo notificare i compleanni

    Grazie

  8. #8
    Originariamente inviato da DjRiKyX
    Grazie, ora funziona, restituisce 19, nel mio caso, però, non tiene comunque conto dei giorni.. o meglio, ne tiene conto ma lo fa in modo sbagliato.

    Esempio: se metto 1990-12-14 mi restituisce 18 (dovrebbe dare 19, visto che siamo al 16)
    c'è un margine d'errore di 3 giorni, perchè mettendo 1990-12-13 da 19..

    Come risolvo? a me serve preciso, perchè devo notificare i compleanni

    Grazie
    'zzi tua :-o xD

  9. #9
    Ho risolto aggiungendo 3 giorni alla data attuale.. forse è il mio server che da qualche problema.. poi lo testerò in remoto..

    Ho un'altra cosa da chiedere sempre riguardo alle date...

    Ho una ricerca utenti, dove è possibile selezionare l'età.. sia singola, quindi una ricerca precisa, e sia tra un'età e l'altra.. es tra 20 e 25 etc..

    Prima salvavo direttamente l'età nel db e quindi era facile cercare utenti con una certa età..
    però ora che mi sono aggiornato utilizzando la data di nascita, ho qualche problema con le query..

    Cercando nel forum ho trovato questa:

    codice:
    select utente,( YEAR(CURRENT_DATE)-YEAR(data))- ( RIGHT(CURRENT_DATE,5)< RIGHT(data,5) ) AS eta
    from tabella  
    ( YEAR(CURRENT_DATE)-YEAR(data))- ( RIGHT(CURRENT_DATE,5)< RIGHT(data,5) )
    between 15 and 20
    L'ho addattata al mio script e funziona alla grande, solamente, che fa un controllo solo sull'anno.. e facendo una prova veloce, se ricerco persone di 20 anni, capita che spuntino fuori anche altre con 21..

    Non è un dramma, ma si riuscirebbe a restringere il campo anche sul mese e il giorno?

    Grazie

  10. #10
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da DjRiKyX
    Ho risolto aggiungendo 3 giorni alla data attuale.. forse è il mio server che da qualche problema..
    Non credo.
    Credo piuttosto che abbia "qualche problema" uno che non si è mai accorto che non tutti gli anni hanno 365 giorni.

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.