Dans certaines situations, je souhaite ajouter 1 jour à la valeur de ma variable au format 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?
time()
parstrtotime("{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}")
.Il y a plus d'une façon de faire cela avec DateTime qui a été introduit dans PHP 5.2. Contrairement à l'utilisation,
strtotime()
cela tiendra compte de l'heure d'été et de l'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');
la source
+2 day
ou+2 days
(+2 days
est évidemment plus sémantiquement correct)Le constructeur DateTime prend un paramètre
string time
.$time
peut être des choses différentes, il doit respecter le format datetime .Il existe quelques valeurs valides comme 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
la source
strtotime
pour convertir la chaîne en un horodatagepar exemple:
$time = strtotime($myInput); $newTime = $time + 86400;
Si cela ne fait qu'ajouter 1 jour, utiliser à nouveau strtotime est probablement exagéré.
la source
date()
le fuseau horaire local est pris en compte, ce qui prendra en charge l'heure d'été.Vous pouvez utiliser
$now = new DateTime(); $date = $now->modify('+1 day')->format('Y-m-d H:i:s');
la source
Je suggère de commencer à utiliser les classes Zend_Date de Zend Framework . Je sais, c'est un peu hors sujet, mais j'aimerais bien :-)
$date = new Zend_Date(); $date->add('24:00:00', Zend_Date::TIMES); print $date->get();
la source
Vous pouvez utiliser comme suit.
$start_date = date('Y-m-d H:i:s'); $end_date = date("Y-m-d 23:59:59", strtotime('+3 days', strtotime($start_date)));
Vous pouvez également définir les jours comme constants et les utiliser comme ci-dessous.
if (!defined('ADD_DAYS')) define('ADD_DAYS','+3 days'); $end_date = date("Y-m-d 23:59:59", strtotime(ADD_DAYS, strtotime($start_date)));
la source
Utilisation du temps de demande du serveur pour ajouter des jours. Fonctionne 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 n'importe quel nombre de jours.
la source
Il existe une manière plus concise et intuitive d'ajouter des jours à la date php. Ne vous méprenez pas, ces expressions php sont géniales, mais vous devez toujours rechercher sur Google comment les traiter. Je m'ennuie de l'installation d'auto-complétion pour cela.
Voici comment j'aime gérer ces cas:
(new Future( new DateTimeFromISO8601String('2014-11-21T06:04:31.321987+00:00'), new OneDay() )) ->value();
Pour moi, c'est beaucoup plus intuitif et la saisie semi-automatique fonctionne immédiatement. Pas besoin de chercher la solution sur Google à chaque fois.
En prime, vous n'avez pas à vous soucier du formatage de la valeur résultante, c'est déjà le format ISO8601.
Ceci est une bibliothèque de meringues, il y a plus d'exemples ici .
la source