Visualizzazione risultati 1 fino 3 di 3

Discussione: Età ed operazioni sulle date

  1. #1
    Guest

    Angry Età ed operazioni sulle date

    Eccomi qua con l'ennesimo problema di questa mia travagliata settimana di programmazione. Ho necessità di creare una funzione che mi aggiunga 124 anni alla data attuale ed a questo risultato ne sottragga una recuperata dal DB. Dopo mille peripezie sono arrivato a questa funzione:

    Codice PHP:
    function gdrcd_old($nascita)
    {
    $data = strtotime("+124 year");
    $adesso = date('Y-m-d', strtotime("+124 year"));
    $datetime1 = date_create($adesso);
    $datetime2 = date_create($nascita);
    $interval = date_diff($datetime1, $datetime2);
    $eta = "Et&agrave: ".$interval->format("%y");

    return
    $eta;
    }
    richiamata così:

    Codice PHP:
    echo gdrcd_old("2125-02-05");
    N.B. = La data inserita è di mera prova, li andrà il valore preso dal DB.

    Ad ogni modo, a parte che vorrei invece di usare il 124 inserire questa stringa:

    Codice PHP:
    $PARAMETERS['date']['offset']
    il problema maggiore è che la funzione, non funziona mi restituisce come risultato Età: 155. Non capisco dove sbaglio, qualcuno può aiutarmi?

    Grazie mille in anticipo

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    strtotime restituisce un unix timestamp, il che vuol dire che al massimo riesce a contenere un intervallo di circa 68 anni e quindi con quei +124 va in overflow restituisce un qualcosa di sbagliato. Facendosi stampare i valori intermedi è più facile capire cosa non va.

    Probabilmente ti conviene usare l'oggetto DateTime.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    Guest

    Predefinito

    Ho faticosamente cercato di capircene qualcosa ed andando un po' a tentativi sono riuscito a... ottenere una dozzina di errori diversi XD

    AGG.: Sono riuscito a risolvere così:

    Codice PHP:
    function gdrcd_old($nascita, $offset)
    {
    $adesso = (strftime('%Y')+$offset).'-'.strftime('%m').'-'.strftime('%d');
    $datetime1 = date_create($adesso);
    $datetime2 = date_create($nascita);
    $interval = date_diff($datetime1, $datetime2);
    $eta = "Et&agrave: ".$interval->format("%y");

    return
    $eta.' '.$adesso.' '.$datetime1->format('d-m-Y').' '.$datetime2->format('d-m-Y');
    }
    Ora basta che rimuovo il return dei passaggi intermedi, ed il gioco è fatto :D
    Ultima modifica di morgensterngdr : 05-02-2013 alle ore 21.07.03

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •