In determinate situazioni voglio aggiungere 1 giorno al valore della mia variabile formattata DATETIME:
$start_date = date('Ymd H:i:s', strtotime("{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}"));
Qual è il modo migliore per farlo?
Se vuoi farlo in PHP:
// replace time() with the time stamp you want to add one day to $startDate = time(); date('Ymd H:i:s', strtotime('+1 day', $startDate));
Se si desidera aggiungere la data in MySQL:
-- replace CURRENT_DATE with the date you want to add one day to SELECT DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY);
C'è più di un modo per farlo con DateTime che è stato introdotto in PHP 5.2. A differenza dell'utilizzo di strtotime()
ciò rappresenterà l'ora legale e l'anno bisestile.
$datetime = new DateTime('2013-01-29'); $datetime->modify('+1 day'); echo $datetime->format('Ymd H:i:s'); // Available in PHP 5.3 $datetime = new DateTime('2013-01-29'); $datetime->add(new DateInterval('P1D')); echo $datetime->format('Ymd H:i:s'); // Available in PHP 5.4 echo (new DateTime('2013-01-29'))->add(new DateInterval('P1D'))->format('Ymd H:i:s'); // Available in PHP 5.5 $start = new DateTimeImmutable('2013-01-29'); $datetime = $start->modify('+1 day'); echo $datetime->format('Ymd H:i:s');
strtotime
per convertire la string in un timestamp per esempio:
$time = strtotime($myInput); $newTime = $time + 86400;
Se si aggiunge solo 1 giorno, quindi usare strtotime di nuovo è probabilmente eccessivo.
Il constructor DateTime accetta una string time
parametri. $time
può essere cose diverse, deve rispettare il formato datetime .
Ci sono alcuni valori validi come esempi:
'now'
(il valore predefinito) 2017-10-19
2017-10-19 11:59:59
2017-10-19 +1day
Quindi, nel tuo caso puoi usare quanto segue.
$dt = new \DateTime('now +1 day'); //Tomorrow $dt = new \DateTime('2016-01-01 +1 day'); //2016-01-02
Suggerisco di iniziare a utilizzare le classi Zend_Date da Zend Framework . Lo so, è un po 'fuori moda, ma mi piacerà in questo modo 🙂
$date = new Zend_Date(); $date->add('24:00:00', Zend_Date::TIMES); print $date->get();