web-dev-qa-db-fra.com

ajout d'un jour à une valeur de format DATETIME

Dans certaines situations, je souhaite ajouter 1 jour à la valeur de ma variable formatée DATETIME:

$start_date = date('Y-m-d H:i:s', strtotime("{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}"));

Quelle est la meilleure façon de procéder?

70
ian

Si vous voulez faire cela en PHP:

// replace time() with the time stamp you want to add one day to
$startDate = time();
date('Y-m-d H:i:s', strtotime('+1 day', $startDate));

Si vous voulez ajouter la date dans MySQL:

-- replace CURRENT_DATE with the date you want to add one day to
SELECT DATE_ADD(CURRENT_DATE, INTERVAL 1 DAY);
51
RaYell

Il y a plus d'une façon de faire cela avec DateTime qui a été introduit dans PHP 5.2. Contrairement à l'utilisation de strtotime()), cela tiendra compte de l'heure d'été et année bissextile.

$datetime = new DateTime('2013-01-29');
$datetime->modify('+1 day');
echo $datetime->format('Y-m-d H:i:s');

// Available in PHP 5.3

$datetime = new DateTime('2013-01-29');
$datetime->add(new DateInterval('P1D'));
echo $datetime->format('Y-m-d H:i:s');

// Available in PHP 5.4

echo (new DateTime('2013-01-29'))->add(new DateInterval('P1D'))->format('Y-m-d H:i:s');

// Available in PHP 5.5

$start = new DateTimeImmutable('2013-01-29');
$datetime = $start->modify('+1 day');
echo $datetime->format('Y-m-d H:i:s');
178
John Conde

Le constructeur DateTime utilise un paramètre string time. $time _ peut être différent, il doit respecter le format de date/heure .

Il y a quelques valeurs valables à titre d'exemples:

  • 'now' (la valeur par défaut)
  • 2017-10-19
  • 2017-10-19 11:59:59
  • 2017-10-19 +1day

Donc, dans votre cas, vous pouvez utiliser ce qui suit.

$dt = new \DateTime('now +1 day'); //Tomorrow
$dt = new \DateTime('2016-01-01 +1 day'); //2016-01-02
20
Dmitry
  1. Utilisez strtotime pour convertir la chaîne en un horodatage
  2. Ajoutez-lui un jour (par exemple: en ajoutant 86400 secondes (24 * 60 * 60))

par exemple:

$time = strtotime($myInput);
$newTime = $time + 86400;

Si cela ne fait qu'ajouter 1 jour, alors utiliser strtotime à nouveau est probablement excessif.

9
nickf

Je suggère de commencer à utiliser Zend_Date classes de Zend Framework . Je sais, c'est un peu décalé, mais j'aimerai cette façon :-)

$date = new Zend_Date();
$date->add('24:00:00', Zend_Date::TIMES);
print $date->get();
1
Pawka

Vous pouvez utiliser

$now = new DateTime();
$date = $now->modify('+1 day')->format('Y-m-d H:i:s');
0
Omar Hasan

Utilisation du temps de requête du serveur pour ajouter des jours. Travailler comme prévu.

25/08/19 => 27/09/19

$timestamp = $_SERVER['REQUEST_TIME'];
$dateNow = date('d/m/y', $timestamp);
$newDate = date('d/m/y', strtotime('+2 day', $timestamp));

Ici '+2 jours' pour ajouter un nombre quelconque de jours.

0
Niroshan