Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    1,973

    Conversione data per differenza

    Ho questa funzione che funziona
    Codice PHP:
            $data1 = new DateTime('2021-04-15');
            
    $data2 = new DateTime($oggi);
            
    $interval $data1->diff($data2);
            echo 
    $interval->format('%R%d'); 
    Semplicemente vorei sostituire $data1 con una data che ho $ggm + 1 anno.
    Così:
    Codice PHP:
             echo $ggm// echo resistuisce 2020-03-19
            
    $data1 strtotime ('+1 year' strtotime ($ggm)) ; 
    Ma in quel modo ho l'errore:

    codice HTML:
    Fatal error: Call to a member function diff() on a non-object
    Sicuramente è un errore di formato, ma non gli passo lo stesso???
    Grazie

  2. #2
    A me questo codice gira:

    codice:
    $oggi = '2021-04-13';
    
    $data1 = new DateTime('2021-04-15');
    $data2 = new DateTime($oggi);
    $interval = $data1->diff($data2);
    echo $interval->format('%R%d');

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    1,973
    Si il tuo funziona.... è data1 che mi da errore quando le aggiungo un anno così:

    codice:
    echo $ggm; // echo resistuisce 2020-03-19
            $data1 = strtotime ('+1 year' , strtotime ($ggm)) ;  
    
    Fatal error: Call to a member function diff() on a non-object in

    La riga segnalata è
    codice:
    $interval = $data1->diff($data2);
    Ma il problema è sicuramente data1, perchè se gli forzo la data come hai fatto tu funziona.

  4. #4
    Chiediti cosa restituisce https://www.php.net/strtotime e che cosa è DateTime e scommetto che scopri l'arcano.

  5. #5
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    1,973
    Che l'errore è dato che passo due cose diverse mi è chiaro... ma non mi è chiaro come passare data1 nello stesso formato.
    Io ho una data del 2020 a cui devo sommare un anno.

  6. #6

  7. #7
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    1,973
    Non riesco a capire... io da strtotime devo passare a datetime
    codice:
    $date = new DateTime();
    echo $date->format('U = Y-m-d H:i:s') . "\n";
    li vedo come formattare il datetime, che però a me va bene come è. (in quel caso funziona)

  8. #8
    codice:
    echo $ggm; // echo resistuisce 2020-03-19
    $timestamp = strtotime ('+1 year' , strtotime ($ggm)) ;  
    
    $data1 = new DateTime();
    $data1->setTimestamp($timestamp);
    Ultima modifica di filippo.toso; 14-04-2021 a 10:14 Motivo: Typo

  9. #9
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    1,973
    No!
    Perchè sulla riga
    codice:
    $data1->setTimestamp(timestamp);
    Ho ben due errori
    Notice: Use of undefined constant timestamp - assumed 'timestamp'
    Warning: DateTime::setTimestamp() expects parameter 1 to be long, string given


    Poi indipendentemente dalla data di partenza il risultato che stampa è sempre -0

  10. #10
    codice:
    $ggm = '2020-03-19';
    
    echo $ggm; // echo resistuisce 2020-03-19
    $timestamp = strtotime('+1 year', strtotime($ggm));
    
    
    $data1 = new DateTime();
    $data1->setTimestamp($timestamp);
    
    
    var_dump($data1);

Tag per questa discussione

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 © 2021 vBulletin Solutions, Inc. All rights reserved.