Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2016
    Messaggi
    17

    php count down datetime

    Salve a tutti, vorrei un informazione
    ho un problema con un countdown, mi spiego meglio, ho inserito due variabili e fatta la differenza, solo che ottengo un errore, ossia, non è possible convertire datatime in int "Object of class DateTime could not be converted to int" qualcosa mi può esplicitare meglio il problema e aiutarmi a trovare una soluzione possibile ?
    rilascio il codice qui sotto.
    Grazie a tutti

    Codice PHP:
    <?php
    $date 
    = new DateTime('now');
    $then = new DateTime('Saturday 21:00');
    $difference=$date-$then;
    echo 
    "script> 
       var display = document.querySelector('#grb'); 
       startGrbTimer(" 
    $difference ", display);
    </script>"
    ;
    ?>

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    per calcolare la differenza usa
    $difference = $date->diff($then)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2016
    Messaggi
    17
    Quote Originariamente inviata da clasku Visualizza il messaggio
    per calcolare la differenza usa
    $difference = $date->diff($then)
    nuovo errore " Catchable fatal error: Object of class DateInterval could not be converted to string ", è mi da come errore il " startGrbTimer(" . $difference . ", display); ", non so se sia sbagliato questo a sto punto, qualche soluzione ?
    Oppure che esista qualche funziona differente che pur sempre funzioni come un countdown?

    Grazie.

    Grazie

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    davo per scontato che poi avresti formattato $difference usando format
    guarda gli esempi per il calcolo dell'intervallo tra due date => http://php.net/manual/en/datetime.diff.php
    qui i parametri da passare a format => http://php.net/manual/en/dateinterval.format.php

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2016
    Messaggi
    17
    Quote Originariamente inviata da clasku Visualizza il messaggio
    davo per scontato che poi avresti formattato $difference usando format
    guarda gli esempi per il calcolo dell'intervallo tra due date => http://php.net/manual/en/datetime.diff.php
    qui i parametri da passare a format => http://php.net/manual/en/dateinterval.format.php
    ci sono riuscito, grazie mille, il problema ora è che mi risultano 59 giorni di countdown, ma forse non legge cosa viene scritto? il 'now' e 'saturday 21' ? riportati essi nelle due datetime ?

    $difference=$difference->format('%a%H%I%S');

    questo è quello che ho scritto, leggendo la tua guida, unico problema sono i giorni che dovrebbero essere 6 contando oggi, cioè il coundown funziona però è sballato.

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    a me il tuo stesso codice restituisce, in questo momento, 5 giorni (la 'a'), 18 ore (la 'H'), 47 minuti (la 'I') e 20 secondi (la 'S')

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2016
    Messaggi
    17
    Quote Originariamente inviata da clasku Visualizza il messaggio
    a me il tuo stesso codice restituisce, in questo momento, 5 giorni (la 'a'), 18 ore (la 'H'), 47 minuti (la 'I') e 20 secondi (la 'S')
    si, senza lo scripts ora provando mi da 5gg, però nel sito con i div e tutto mi escono 59gg, non so, se posto l'url casomai e vedi anche te, mi faresti una cortesia, perchè non capisco come mi escano 59giorni nel sito e su un test php online 5gg

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2016
    Messaggi
    17
    non sapendo come modificare il mio post recente, questa è la funzione che richiama il countdown
    codice HTML:
    function startGrbTimer(duration, display) {    
    var timer = duration, hours, minutes, seconds;    
    setInterval(function () {        
    days = parseInt(timer / 3600 / 24, 10);
            hours = parseInt(timer % 3600 / 60 / 24, 10); 
           minutes = parseInt(timer % 3600 / 60, 10);   
         seconds = parseInt(timer % 60, 10);
            hours = hours < 10 ? "0" + hours : hours;    
        minutes = minutes < 10 ? "0" + minutes : minutes;  
          seconds = seconds < 10 ? "0" + seconds : seconds;
            display.textContent = days + " day" + (days > 1 ? "s" : "") + ", " + hours + " hours, " +  minutes + " minutes, " + seconds + " seconds";
            if (--timer < 0) {           
     timer = duration;       
     }
        }, 1000);
    }

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Questa è una funzione Javascript, se i problema è Javascript (e pare che sia così visto che PHP ti restituisce i valori corretti) devi chiedere nella sezione ad esso dedicata.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2016
    Messaggi
    17
    si, riguardante quello si, però la funzione ho controllato con un debug ed è giusta, volevo sapere come posso fare dopo la differenza quindi $difference=$data->diff($then); come posso date un formato, ma di soli secondi, perchè la funzione richiede il tempo diviso in secondi, che poi divide i giorni ore e tutto, quindi un format per com'era prima, ma solo tutto in secondi, cioè se mancano 5 giorni quei 5 giorni e ore e tutto divisi in secondi, qualche idea ?
    Grazie

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