[PHP] Differenza Date + Ore

Emix

Utente Attivo
15 Feb 2010
594
0
16
Buonasera a tutti,
era un pò che non scrivevo... Sto implementando uno script stupido per modificare una tabella.
Semplicemente nella tabella c'è un contratto inserito e in automatico nel DB c'è la data e l'ora completa (datetimestamp) in cui lo carica. L'utente può modificare questo contratto non oltrepassando un ora di tempo da quando lo ha caricato.
Assumendo che io abbia 2017-07-17 10:23:13 nel DB e devo confrontarlo con l'ora e la data di oggi stesso ho dei problemi.
Mi spiego.. usando la funzione nuova di PHP va, ma non riesco poi a fare un if in cui chiedergli se è passata + o - di un ora. Riuscite ad aiutarmi? spero di essermi spiegato...

Grazie
 

marino51

Utente Attivo
28 Feb 2013
2.904
160
63
Lombardia
non ho capito quale nuova funzione di php, non l'hai indicata, per cui la mia soluzione
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 />";
$dt è la data nel database,
$lt è la data-ora locale corrente
$dd se maggiore di 1 supera l'ora

ho cercato di contenere al massimo il codice, dimmi se ti basta ed è chiaro

ps, non usare altri metodi per generare il timer corrente, per non incorrere in problemi legati ad UTC piuttosto che locale, a meno che non conosci la soluzione

da buoni ultimi, due esempi

2017-07-24 19:27:13 DateTime di partenza
2017-07-24 20:45:44 Local DateTime corrente

1.3086111111111 differenza in ore

Pratica non modificabile

----------

2017-07-24 19:48:13 DateTime di partenza
2017-07-24 20:46:36 Local DateTime corrente

0.97305555555556 differenza in ore

ok alle modifiche
 
Ultima modifica: