Dites que j'ai une chaîne à entrer, "2007-02-28"
, quel est le code le plus simple que je pourrais écrire pour le transformer en "2007-03-01"
? En ce moment je suis juste en utilisant strtotime()
, puis en ajoutant 24*60*60
, puis en utilisant date()
, mais je me demandais si il ya une façon plus propre, plus simple, ou plus intelligente de le faire.Le moyen le plus simple d'incrémenter une date en PHP?
Répondre
Une manière propre est utiliser strtotime()
$date = strtotime("+1 day", strtotime("2007-02-28"));
echo date("Y-m-d", $date);
vous donnera le 2007-03-01
Il est plus propre et plus simple d'ajouter 86400. :)
La façon dont la haute technologie est de faire:
$date = new DateTime($input_date);
$date->modify('+1 day');
echo $date->format('Y-m-d');
mais qui est vraiment utile que si vous à distance vous faites, par exemple, une séquence de transformations sur la date, plutôt que de simplement trouver demain.
Vous pouvez faire l'addition à l'intérieur strtotime, par exemple
$today="2007-02-28";
$nextday=strftime("%Y-%m-%d", strtotime("$today +1 day"));
Oh, propre. Je ne le savais pas. C'est presque comme le bon vieux Date :: Manip. – chaos
Une autre façon est d'utiliser la fonction mktime(). Il est fonction utile ...
$date = "2007-02-28";
list($y,$m,$d)=explode('-',$date);
$date2 = Date("Y-m-d", mktime(0,0,0,$m,$d+1,$y));
mais je pense que strtotime()
est mieux dans cette situation ...
sympa, je ne me suis pas rendu compte que mktime() incrémenterait le mois comme ça quand vous dépassez –
La façon la plus simple ...
echo date('Y-m-d',strtotime("+1 day")); //from today
OU de la date indiquée .. .
echo date('Y-m-d',strtotime("+1 day", strtotime('2007-02-28')));
$early_start_date = date2sql($_POST['early_leave_date']);
$date = new DateTime($early_start_date);
$date->modify('+1 day');
$date_a = new DateTime($early_start_date . ' ' . $_POST['start_hr'] . ':' . $_POST['start_mm']);
$date_b = new DateTime($date->format('Y-m-d') . ' ' . $_POST['end_hr'] . ':' . $_POST['end_mm']);
$interval = date_diff($date_a, $date_b);
Hel lo vous pouvez essayer ceci ci-dessous, surtout si vous êtes français
$date = date('l j F Y');
#increment the date
$date2 = date('l j F Y', strtotime("+7 day"));
traduire en français, vous pouvez utiliser la fonction setlocale() ou la fonction ci-dessous:
function fr_date($date){
$date = explode(' ', $date);
$date = str_replace('Monday','Lundi',$date);
$date = str_replace('Tuesday','Mardi',$date);
$date = str_replace('Wednesday','Mercredi',$date);
$date = str_replace('Thursday','Jeudi',$date);
$date = str_replace('Friday','Vendredi',$date);
$date = str_replace('Saturday','Samedi',$date);
$date = str_replace('Sunday','Dimanche',$date);
$date = str_replace('January','Janvier',$date);
$date = str_replace('February','Février',$date);
$date = str_replace('March','Mars',$date);
$date = str_replace('April','Avril',$date);
$date = str_replace('May','Mai',$date);
$date = str_replace('June','Juin',$date);
$date = str_replace('July','Juillet',$date);
$date = str_replace('August','Août',$date);
$date = str_replace('September','Septembre',$date);
$date = str_replace('October','Octobre',$date);
$date = str_replace('November','Novembre',$date);
$date = str_replace('December','Décembre',$date);
$date = implode(' ',$date);
return $date;
}
$your_date = strtotime("1month", strtotime(date("Y-m-d")));
$new_date = date("Y-m-d", $your_date++);
/("1month") = augmentera d'un mois à l'autre. // ("1day") = sera incrémenté de jour. // (date ("Y-m-d")) = commence à incrémenter la date de votre date actuelle. –
Vous devriez éditer votre réponse pour inclure l'explication du code, au lieu d'avoir l'explication dans un commentaire. – astidham2003
stupide CentOS n'a que PHP 5.1 , et DateTime est introduit en 5.2. Je suppose que je dois enfin passer à un paquet non officiel de centos php alors. – davr
Er, no. Juste ajouter 86400 est une fausse simplicité. – staticsan
Pourriez-vous expliquer ce que vous entendez par là? – chaos