J'ai une date PHP sous la forme de 2013-01-22et je veux obtenir la date de demain dans le même format, par exemple 2013-01-23.
Comment est-ce possible avec PHP?
Réponses:
Utiliser DateTime
$datetime = new DateTime('tomorrow');
echo $datetime->format('Y-m-d H:i:s');
Ou:
$datetime = new DateTime('2013-01-22');
$datetime->modify('+1 day');
echo $datetime->format('Y-m-d H:i:s');
Ou:
$datetime = new DateTime('2013-01-22');
$datetime->add(new DateInterval("P1D"));
echo $datetime->format('Y-m-d H:i:s');
Ou en PHP 5.4+:
echo (new DateTime('2013-01-22'))->add(new DateInterval("P1D"))
->format('Y-m-d H:i:s');
$tomorrow = date("Y-m-d", strtotime('tomorrow'));
ou
$tomorrow = date("Y-m-d", strtotime("+1 day"));
Lien d'aide: STRTOTIME ()
Depuis que vous l'avez tagué avec strtotime, vous pouvez l'utiliser avec le +1 daymodificateur comme ceci:
$tomorrow_timestamp = strtotime('+1 day', strtotime('2013-01-22'));
Cela dit, c'est une bien meilleure solution pour utiliser DateTime .
<? php
//1 Day = 24*60*60 = 86400
echo date("d-m-Y", time()+86400);
?>
echo date ('Y-m-d',strtotime('+1 day', strtotime($your_date)));
Utilisez DateTime:
Pour obtenir demain à partir de maintenant:
$d = new DateTime('+1day');
$tomorrow = $d->format('d/m/Y h.i.s');
echo $tomorrow;
Résultats: 28/06/2017 08.13.20
Pour obtenir demain à partir d'une date:
$d = new DateTime('2017/06/10 08.16.35 +1day')
$tomorrow = $d->format('d/m/Y h.i.s');
echo $tomorrow;
Résultats: 06/11/2017 08.16.35
J'espère que ça aide!
/**
* get tomorrow's date in the format requested, default to Y-m-d for MySQL (e.g. 2013-01-04)
*
* @param string
*
* @return string
*/
public static function getTomorrowsDate($format = 'Y-m-d')
{
$date = new DateTime();
$date->add(DateInterval::createFromDateString('tomorrow'));
return $date->format($format);
}
Par étrange, il peut sembler que cela fonctionne parfaitement bien: date_create( '2016-02-01 + 1 day' );
echo date_create( $your_date . ' + 1 day' )->format( 'Y-m-d' );
Devrait le faire
Premièrement, trouver des abstractions correctes est toujours une clé. clé de la lisibilité, de la maintenabilité et de l'extensibilité.
Ici, un candidat assez évident est un ISO8601DateTime. Il existe au moins deux implémentations: la première est une date / heure analysée à partir d'une chaîne et la seconde est demain. Par conséquent, il existe deux classes qui peuvent être utilisées et leur combinaison aboutit au résultat (presque) souhaité:
new Tomorrow(new FromISO8601('2013-01-22'));
Les deux objets sont une date / heure ISO8601, leur représentation textuelle n'est donc pas exactement ce dont vous avez besoin. Le coup final est donc de leur faire prendre une forme de date:
new Date(
new Tomorrow(
new FromISO8601('2013-01-22')
)
);
Puisque vous avez besoin d'une représentation textuelle, pas seulement d'un objet, vous invoquez un value() méthode.
Pour en savoir plus sur cette approche, jetez un œil à cet article .
voici la fonction de travail
function plus_one_day($date){
$date2 = formatDate4db($date);
$date1 = str_replace('-', '/', $date2);
$tomorrow = date('Y-m-d',strtotime($date1 . "+1 days"));
return $tomorrow; }
$date = '2013-01-22';
$time = strtotime($date) + 86400;
echo date('Y-m-d', $time);
Où 86400 est le nombre de secondes dans une journée.