2009-03-18 5 views
34

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

72

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

29

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.

+1

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

+3

Er, no. Juste ajouter 86400 est une fausse simplicité. – staticsan

+0

Pourriez-vous expliquer ce que vous entendez par là? – chaos

16

Vous pouvez faire l'addition à l'intérieur strtotime, par exemple

$today="2007-02-28"; 
$nextday=strftime("%Y-%m-%d", strtotime("$today +1 day")); 
+0

Oh, propre. Je ne le savais pas. C'est presque comme le bon vieux Date :: Manip. – chaos

6

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 ...

+0

sympa, je ne me suis pas rendu compte que mktime() incrémenterait le mois comme ça quand vous dépassez –

5

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'))); 
-1
$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); 
0

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; 

} 
0
$your_date = strtotime("1month", strtotime(date("Y-m-d"))); 
$new_date = date("Y-m-d", $your_date++); 
+0

/("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. –

+2

Vous devriez éditer votre réponse pour inclure l'explication du code, au lieu d'avoir l'explication dans un commentaire. – astidham2003

Questions connexes