2012-07-27 13 views
14

Ho bisogno di sottrarre 45 minuti dalla variabile data-ora in PHP.PHP, usa strtotime per sottrarre minuti da una variabile data-ora?

Il codice:

$thestime = '2012-07-27 20:40'; 
$datetime_from = date("Y-m-d h:i",strtotime("-45 minutes",strtotime($thestime))); 
echo $datetime_from; 

restituisce il risultato 2012-07-27 07:55.

Tuttavia, dovrebbe essere 2012-07-27 19:55. Come posso risolvere questo?

risposta

34

Si dovrebbe fare:

$datetime_from = date("Y-m-d H:i", strtotime("-45 minutes", strtotime($thestime))); 

Avere H invece di h indica un formato di 24 ore viene utilizzato, che rappresenta l'ora con zeri: 00 attraverso 23.

Ulteriori informazioni sono disponibili su PHP date function documentation.


Ci sono anche oggetto modi orientati di fare questo, che sono più fluente, come DateTime::sub:

$datetime_from = (new DateTime($thestime))->sub(DateInterval::createFromDateString('45 minutes'))->format('Y-m-d H:i') 

o il modo ancor più espressivo offerto dalla biblioteca Carbon che si estende di PHP costruito nel DateTime classe:

$datetime_from = (new Carbon($thestime))->subMinutes(45)->format('Y-m-d H:i');