[PHP] countdown 6 ore data

Alex1990000

Nuovo Utente
26 Lug 2017
9
0
1
33
buonasera a tutti,
avrei un quesito riguardo la differenza tra due date, il perché se faccio quest0 calcolo :
PHP:
$date=date('Y-m-d H:i:s');
$faultdate = $row["datacreazione"];
                $difference =$date - $faultdate;
                $num = $difference/86400;
                $days = intval($num);
                $num2 = ($num - $days)*24;
                $hours = intval($num2);
                $num3 = ($num2 - $hours)*60;
                $mins = intval($num3);
                $num4 = ($num3 - $mins)*60;
                $secs = intval($num4);
        echo $faultdate;
        echo $hours.'hours';

Invece di restituite un tempo mi fornisce sempre 0 ore. Le date nelle variabili sono correttamente visualizzabili: 1) al db registrata tramite form 2) data restituita dal server.

Cod. Completo con modifica:

PHP:
<?php
    include 'connection.php';
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    

    $sql = "SELECT  * FROM faultmetroweb";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
    // output data of each row
        while($row = $result->fetch_assoc()) {
            $ft = $row["datacreazione"];
            $ft = new DateTime($ft);
            $lt = new DateTime();
            $dd = ( $lt->getTimestamp() - $ft->getTimestamp() ) / 3600;

            echo $lt->format('Y-m-d H:i:s')." Local DateTime corrente <br /><br />";
            echo $dd." differenza in ore <br /><br />";

                
        echo '<!DOCTYPE html>';
        echo '<html>';
        echo '<head>';
        echo '<style>*{margin:0px; padding:0px; text-align:center;}body{background-color:#d0e4fe;}h4{color:orange;text-align:center;}p{font-family:"Times New Roman";font-size:15px;}table{width:1100px;}td{width:100px;}</style>';
        echo '</head>';
        echo '<body>';
        echo '<table>';
        echo '<tr>';
        echo '<td><h4>ID</h4></td>';
        echo '<td><h4>ID Richiesta</h4></td>';
        echo '<td><h4>Codice Comunicazione Olo</h4></td>';
        echo '<td><h4>System</h4></td>';
        echo '<td><h4>Stato Attuale</h4></td>';
        echo '<td><h4>ID Risorsa</h4></td>';
        echo '<td><h4>Cliente</h4></td>';
        echo '<td><h4>Flag Individuazione Guasto</h4></td>';
        echo '<td><h4>Comune</h4></td>';
        echo '<td><h4>GPON ID</h4></td>';
        echo '<td><h4>Data Creazione</h4></td>';
        echo '<td><h4>Tempo Di Lavorazione</h4></td>';
        echo '</tr>';
        echo '<tr>';
        echo '<td>'. $row["id"].'</td>';
        echo '<td>'. $row["idrichiesta"].'</td>';
        echo '<td>'. $row["codicecomunicazioneolo"].'</td>';
        echo '<td>'. $row["system"].'</td>';
        echo '<td>'. $row["statoattuale"].'</td>';
        echo '<td>'. $row["idrisorsa"].'</td>';
        echo '<td>'. $row["cliente"].'</td>';
        echo '<td>'. $row["flagindividuazioneguasto"].'</td>';
        echo '<td>'. $row["comune"].'</td>';
        echo '<td>'. $row["gponid"].'</td>';
        echo '<td>'. $row["datacreazione"].'</td>';
        echo '<td>'. $dd.' Ore</td>';
        echo '</tr>';
        echo '</table>';
        echo '</body>';
        echo '</html>';
        }
    } else {
        echo "0 risultati";
}
    
    
    
    
$conn->close();
?>
 
Ultima modifica:

livellacri

Utente Attivo
18 Ago 2016
108
13
18
$date e $faultdate sono delle stringhe, perciò non puoi effettuare direttamente la sottrazione.
Per trasformare $faultdate in timestamp puoi usare la funzione strtotime, mentre per il timestamp attuale puoi semplicemente usare time(), senza bisogno di definire la variabile $date.

PHP:
$faultdate = $row["datacreazione"];
                $difference = time() - strtotime($faultdate);
                $num = $difference/86400;
                $days = intval($num);
                $num2 = ($num - $days)*24;
                $hours = intval($num2);
                $num3 = ($num2 - $hours)*60;
                $mins = intval($num3);
                $num4 = ($num3 - $mins)*60;
                $secs = intval($num4);
        echo $faultdate;
        echo $hours.'hours';
 

Alex1990000

Nuovo Utente
26 Lug 2017
9
0
1
33
trovato nel vostro forum, grandissimi.
PHP:
$dt = '2017-07-24 19:27:13';

$dt = new DateTime($dt);
$lt = new DateTime();

$dd = ( $lt->getTimestamp() - $dt->getTimestamp() ) / 3600;

echo $dt->format('Y-m-d H:i:s')." DateTime di partenza <br />";
echo $lt->format('Y-m-d H:i:s')." Local DateTime corrente <br /><br />";
echo $dd." differenza in ore <br /><br />";

if ($dd > 1) echo "Pratica non modificabile <br /><br />";
else         echo "ok alle modifiche <br /><br />";

però avrei un altra domanda se io devo impostare più date all'interno dello script ad esempio:

io inserisco una data fa la differenza, ma al momento che io inserisco una sospensione me la blocca è continua dalla data di desospensione è possibile?
 

Alex1990000

Nuovo Utente
26 Lug 2017
9
0
1
33
$date e $faultdate sono delle stringhe, perciò non puoi effettuare direttamente la sottrazione.
Per trasformare $faultdate in timestamp puoi usare la funzione strtotime, mentre per il timestamp attuale puoi semplicemente usare time(), senza bisogno di definire la variabile $date.
giustamente però mi conviene inviarti tutto il codice nel post. Lo modifico subito, perché quella è una data all'interno del DB
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
$date e $faultdate sono delle stringhe, perciò non puoi effettuare direttamente la sottrazione.
oltre a quanto detto da @livellacri che ho citato,
c'è qualche imprecisione di calcolo nelle formule che hai postato, ho corretto, verifica
poi guarda in fondo all'esempio, c'è un metodo più veloce per ottenere il risultato
PHP:
<?php
$faultdate = '2017-07-23 19:27:13';

$dt = new DateTime($faultdate);
$lt = new DateTime();

echo $lt->format('Y-m-d H:i:s')." current local DateTime<br />";
echo $faultdate." data di creazione (faultdate)<br /><br />";

    $num   = (int) ( $lt->getTimestamp() - $dt->getTimestamp() );

    echo "date diff : ".$num."<br />";

    $days  = intval($num / 86400);
    echo "days      : ".$days."<br />";

    $num   = $num - $days * 86400 ;
    echo "resto     : ".$num."<br />";

    $hours = intval($num / 3600);
    echo "hours     : ".$hours."<br />";

    $num   = $num - $hours * 3600;
    echo "resto     : ".$num."<br />";

    $mins  = intval($num / 60);
    echo "mins      : ".$mins."<br />";

    $secs  = intval($num - $mins * 60);
    echo "secs      : ".$secs."<br /><br />";

echo sprintf("%02d days %02d hours %02d minutes %02d seconds", $days, $hours, $mins, $secs)."<br /><br />";

$interval = $lt->diff($dt);
echo $interval->format("%a days %h hours %i minutes %s seconds")."<br /><br />";
?>

relativo riultato,
2017-07-26 23:07:49 current local DateTime
2017-07-23 19:27:13 data di creazione (faultdate)

date diff : 272436
days : 3
resto : 13236
hours : 3
resto : 2436
mins : 40
secs : 36

03 days 03 hours 40 minutes 36 seconds

3 days 3 hours 40 minutes 36 seconds
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
però avrei un altra domanda se io devo impostare più date all'interno dello script ad esempio:

io inserisco una data fa la differenza, ma al momento che io inserisco una sospensione me la blocca è continua dalla data di desospensione è possibile?
pensiero "ermetico" (non vuoi farti capire ! :)) puoi spiegare meglio ?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
attenzione al valore del time locale piuttosto che UTC ...
dal manuale
Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT).
ancora,
The documentation should have this info. The function time() returns always timestamp that is timezone independent (=UTC).
 

Alex1990000

Nuovo Utente
26 Lug 2017
9
0
1
33
pensiero "ermetico" (non vuoi farti capire ! :)) puoi spiegare meglio ?
nono assolutamente ;), vi ringrazio dell'aiuto. Ora vi spiego in parole povere cosa devo fare:

Il pannello in questione serve per visualizzare, tutti i guasti nell'arco della giornata con un tempo massimo di 6 ore e un avviso di ogni 2 ore o 3 in base al tipo guasto.
I dati dei guasti risiedono nel database di cui vorrei da web la possibilità di cancellare e aggiornare i guasti per riga riga è eventualmente delle data di sospensione e de-sospensione che rientrino nelle 6 ore cumulative.

Un pò complicato lo ammetto ma già che funziona è tanto ;)...

attenzione al valore del time locale piuttosto che UTC ...
dal manuale
Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT).
ancora,
The documentation should have this info. The function time() returns always timestamp that is timezone independent (=UTC).

gmdate("Y-m-d\TH:i:s\Z"); ?

ma cosi riesco a togliere la frazione di secondo che non mi serve :D
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
gmdate("Y-m-d\TH:i:s\Z"); ?
ma cosi riesco a togliere la frazione di secondo che non mi serve :D
si certo, ho solo avvertito che restituisce il valore GMT o UTC che dir si voglia,
poi come è fatta la tua applicazione lo sai tu, io non ho idea di come sia stata memorizzata la data nel db, se però fai la differenza tra una data/ora locale ed una GMT,
nasce un problema ......

Il pannello in questione
credo sia una applicazione specifica, forse ti conviene aprire una nuova discussione per trovare chi è disponibile ad aiutarti
 

Alex1990000

Nuovo Utente
26 Lug 2017
9
0
1
33
la cella dei tempi è impostata su DATETIME, pero più che altro non riesco a capire come inserire degli intervalli nelle 6 ore :(.

forse ci sono riuscito, tra un pò posto il codice.
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
Michaelweb93 [PHP] Creazione countdown a 72 ore PHP 1
G Countdown in secondi JS su pagina PHP Javascript 1
A Countdown js con variabile in php Javascript 16
S countdown in php e script per aprire 2 siti contemporanemante PHP 1
E Domanda countdown PHP PHP 3
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7

Discussioni simili