2012-03-13 12 views
9

Come posso trovare la prossima ora più vicino in phptrovare la prossima ora più vicino

così per esempio se il tempo corrente è 04:15 la prossima ora sarà 5, ecc

$dateString = 'Tue, 13 Mar 2012 04:48:34 -0400'; 
$date = new DateTime($dateString); 
echo $date->format('H:i:s'); 

me la dà tempo dalla stringa e voglio espandere su quello e ottenere l'ora successiva più vicina

risposta

1

alimentazione qualsiasi data di ammissibilità() a:

function roundToNextHour($dateString) { 
    $date = new DateTime($dateString); 
    $minutes = $date->format('i'); 
    if ($minutes > 0) { 
     $date->modify("+1 hour"); 
     $date->modify('-'.$minutes.' minutes'); 
    } 
    return $date; 
} 
4

Si può solo prendere pezzi (ore, minuti, secondi) e ottenere l'ora successiva?

$dateString = 'Tue, 13 Mar 2012 04:48:34 -0400'; 
$date = new DateTime($dateString); 

echo $date->format('H:i:s'); 
echo "\n"; 

$nexthour = ($date->format('H') + ($date->format('i') > 0 || $date->format('s') > 0 ? 1 : 0)) % 24; 
echo "$nexthour:00:00"; 
10
$nextHour = (intval($date->format('H'))+1) % 24; 
echo $nextHour; // 5 
3
<?php 

$dateString = 'Tue, 13 Mar 2012 04:48:34 -0400'; 

$date = new DateTime($dateString); 
$date->modify('+1 hour'); 

echo $date->format('H:i:s').PHP_EOL; 

// OR 

echo date('H:i:s', strtotime($dateString) + 60 * 60).PHP_EOL; 
2

Come ho solo bisogno di qualcosa di simile (prossima ora completa) qui la mia soluzione:

$now = time(); 
$nextFullHour = date(DATE_ATOM, $now + (3600 - $now % 3600)); 

Sostituendo il 3600 es con 60 si ottiene il minuto completo successivo ...
È anche possibile sostituire $now con qualsiasi altro timestamp se non è necessario in relazione all'ora corrente.

0

provare per ora corrente, se avete bisogno di mettere secondo argomento di funzione di data

<?php echo date('H')+1; ?>  

roba molto bello

+0

Semplice, breve ed efficace . –

+0

Se ora corrente = 24. Quindi successivo = 24 + 1 = 25 –

0

Quella è la mia soluzione:

$dateTime = new \DateTime(); 
$dateTime->add(new \DateInterval('PT1H')) 
     ->setTime($dateTime->format('H'), '00'); 
0

Ecco come fare:

<?php 
echo date("H:00",strtotime($date. " + 1hour ")); 
?php 
Problemi correlati