Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 37
  1. #1

    Confronto date e compleanni!

    Salve a tutti!
    Sto impazzendo con un confronto di date!

    Devo calcolare l'età di alcuni utenti:
    Nel caso in cui sia nato nel 1989 (cioè ha 15 anni),
    provo a risolverlo calcolando la differenza tra l'anno corrente (2004) e l'anno di nascita dell'utente (1989), ma il problema è che se l'utente compie gli anni per esempio a settembre io già il 1° gennaio 2005 mi ritrovo che l'utente ha 16 anni, quando invece ancora non li ha compiuti (perchè ad esempio fa il compleanno il 20/09) come posso fare?

    P.s. Perchè la matematica non è mai stato il mio forte.. :maLOL:
    What is the |\/|atrix?

  2. #2

  3. #3
    Mi sono letti tutti i post ed ho girato un bel pò anche nelle ricerche!!!
    Non ho trovato nulla che fa al caso mio poichè nel mio caso le date sono create con mktime() ed inserite in un campo del db INT(11)

    Mi puoi dare un aiutino?
    What is the |\/|atrix?

  4. #4
    Ho fatto così e pare che funziona!
    codice:
    <?php
     
        $d =  "09"; 
        $m =  "10"; 
        $y =  "1981"; 
        $bDay = mktime ( 0, 0, 0, $m, $d, $y ); 
        $cTime = time (); 
        $age = $cTime-$bDay; 
        $yr = floor ( $age/(60*60*24*365.242199) ); 
        print "Adesso hai $yr anni"; 
    
    
    
    ?>
    E' giusto quello che ho fatto?
    What is the |\/|atrix?

  5. #5
    Lo script funziona, ma stavo notando una cosa:
    ipotizzando che l'utente è nato il 14/10/1981 ed oggi è il 13/10/2004 l'utente dovrebbe avere 22 anni... invece lo script mi dice che ne ha 23! Questo da quanto ho capito è causato da 365.242199 che da quanto penso non è esatto... come potrei risolvere il problema?

    Ho avuto lo stesso problema in javascript, ma è stato divinamente risolto da br1 http://forum.html.it/forum/showthrea...hreadid=726873 come lo risolvo in php?
    Grazie mille per l'interessamento!
    What is the |\/|atrix?

  6. #6
    prova così:

    codice:
    //query di ricerca dati al database
    $birthday = mysql_query("SELECT * FROM $tablenomi ORDER BY data_nascita DESC");
    
    while($DATI = mysql_fetch_array($birthday){
    $nome = $DATI['nome_utente'];
    $year_of_birth = substr($DATI['data_nascita']),0,4);
    $data_nascita = substr($DATI['data_nascita']),5,5);
    $data_nascita2 = explode("-",$data_nascita);
    $data_nascita = $data_nascita2[1]."-".$data_nascita2[0];
    
    $act_giorno = date("d",$oggi);
    $act_mese = date("m",$oggi);
    
    if(($act_giorno < $data_nascita2[1]) && ($act_mese <= $data_nascita2[0]))
    	{$anni_compiuti = (($anno_attuale - $year_of_birth)-1);}
    else
    	{$anni_compiuti = ($anno_attuale - $year_of_birth);}
    
    echo "$nome compie: $anni_compiuti anni.";
    }
    un pochino macchinoso ma funziona

    tieni presente che però le date le ho considerate archiviate in un campo di tipo date e quindi ad esempio: 1970-11-03 cioè aaaa-mm-gg

    buona fortuna!!
    www.skorpiograph.com - [ PORTFOLIO ]
    ...se vuoi essere aiutato devi aiutare chi ti aiuta ad aiutarti!!!

  7. #7
    Grazie lo stesso... Trovato:
    codice:
    <? 
    $d =  "14"; 
    $m =  "10"; 
    $y =  "1989";
    $oggi=time(); 
    $nascita=mktime ( 0, 0, 0, $m, $d, $y );
    $diff=$oggi-$nascita; 
    $data=date("Y",$diff)-1970;
    echo $data;
    ?>
    What is the |\/|atrix?

  8. #8
    Originariamente inviato da |\/|atrix
    Grazie lo stesso... Trovato:
    codice:
    <? 
    $d =  "14"; 
    $m =  "10"; 
    $y =  "1989";
    $oggi=time(); 
    $nascita=mktime ( 0, 0, 0, $m, $d, $y );
    $diff=$oggi-$nascita; 
    $data=date("Y",$diff)-1970;
    echo $data;
    ?>
    scusa ma forse il mio metodo è un pochino meglio!!
    modestia a parte hai provato a vedere con le date antecedenti il 1970???

    prova e vedrai...

    con una data del tipo 14/10/1969 fa il calcolo giusto anche se però rende un :
    Warning: mktime(): Windows does not support negative values for this function in e:\host\server\www\date.php on line 6

    poi ho provato ad inserire la data 14/10/1968 e mi dice che sono 34 anni?? sbagliato sono 36!! e stesa cosa con 14/10/1944 !!!
    sempre 34 anni!!??? non mi sembra proprio!!!

    ah!! naturalmente rende sempre il solito warning!!

    Dopotutto credo che dovrai considerare il caso in cui un'utente sia nato prima!!!

    p.s. scusa se ti ho smontato ma è solo per aiutarti!!!
    www.skorpiograph.com - [ PORTFOLIO ]
    ...se vuoi essere aiutato devi aiutare chi ti aiuta ad aiutarti!!!

  9. #9
    Grazie mille! Ma per me va bene la funzione che ho postato... poichè le date che ho nel db vanno dal 1975 in poi...

    Piuttosto, stavo litigando con un'altro problema...

    Nel caso inverso... cioè io conosco ad esempio due eta ($eta1=16 e $eta2=22) e voglio effettuare una query al db, prima facevo così:

    $ora = date("Y", mktime (0,0,0,0,0, date("Y")))+1;
    $diff1 = $ora-$_POST['eta1'];
    $diff2 = $ora-$_POST['eta2'];

    SELECT * FROM MIA_TABELLA WHERE FROM_UNIXTIME(nato,'%Y') <= '" . $diff1 . "' and FROM_UNIXTIME(nato,'%Y') >= '" . $diff2 . "'

    ma ora come modifico la query in base alla funzione che ho postato, cioè chiedendo al db di controllare solo nei campi dove l'utente ha effettivamente compiuto gli anni?

    Grazie ancora per l'interessamento!
    What is the |\/|atrix?

  10. #10
    Nessuna Idea?
    What is the |\/|atrix?

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.