web-dev-qa-db-fra.com

PHP - ajoute 1 jour au format de date mm-jj-aaaa

<?php
    $date = "04-15-2013";
    $date = strtotime($date);
    $date = strtotime("+1 day", $date);
    echo date('m-d-Y', $date);
?>

Cela me rend fou et semble si simple. Je suis assez nouveau en PHP, mais je n'arrive pas à comprendre. L'écho renvoie 01-01-1970.

La $ date viendra d'un POST au format m-d-Y, il me faut ajouter un jour et l'ajouter comme nouvelle variable à utiliser ultérieurement.

Dois-je convertir $ date en Y-m-d, ajouter 1 jour, puis reconvertir en m-d-Y? Serais-je mieux d'apprendre à utiliser DateTime?

46
Jayr

voilà

$date = "04-15-2013";
$date1 = str_replace('-', '/', $date);
$tomorrow = date('m-d-Y',strtotime($date1 . "+1 days"));

echo $tomorrow;

cela produira

04-16-2013

Documentation pour les deux fonctions
date
strtotime

107
Fabio
$date = DateTime::createFromFormat('m-d-Y', '04-15-2013');
$date->modify('+1 day');
echo $date->format('m-d-Y');

Voir en action

Ou dans PHP 5.4+

echo (DateTime::createFromFormat('m-d-Y', '04-15-2013'))->modify('+1 day')->format('m-d-Y');

référence

59
John Conde
$date = strtotime("+1 day");
echo date('m-d-y',$date);
9
insoftservice

use http://www.php.net/manual/en/datetime.add.php comme

$date = date_create('2000-01-01');
date_add($date, date_interval_create_from_date_string('1 days'));
echo date_format($date, 'Y-m-d');

sortie

2000-01-2
3

Le format que vous avez utilisé n'est pas reconnu par strtotime (). Remplacer

$date = "04-15-2013";

par

$date = "04/15/2013";

Ou si vous voulez utiliser -, utilisez la ligne suivante avec l'année devant:

$date = "2013-04-15";
1
hek2mgl

En fait, je voulais la même chose, obtenir un an de retard sur une date donnée! :-)

Avec le soupçon de réponse ci-dessus de @ mohammad mohsenipur, je suis arrivé à la suivante lien , via son lien indiqué!

Heureusement, il existe une méthode identique à la méthode date_add, nommée méthode date_sub! :-) Je fais ce qui suit pour faire ce que je voulais!

$date = date_create('2000-01-01');
date_sub($date, date_interval_create_from_date_string('1 years'));
echo date_format($date, 'Y-m-d');

J'espère que cette réponse aidera aussi quelqu'un! :-)

Bonne chance les gars!

0
Randika Vishman