2009-03-18 16 views
34

Angenommen, ich habe eine Zeichenfolge, "2007-02-28", was ist der einfachste Code, den ich schreiben könnte, um das in "2007-03-01" zu verwandeln? Im Moment benutze ich nur strtotime(), dann 24*60*60, dann date(), aber ich frage mich nur, ob es eine sauberere, einfachere oder schlauere Art und Weise, es zu tun.Einfachste Möglichkeit, ein Datum in PHP zu erhöhen?

Antwort

72

Eine saubere Art und Weise ist zu verwenden strtotime()

$date = strtotime("+1 day", strtotime("2007-02-28")); 
echo date("Y-m-d", $date); 

Wollen Sie die 2007-03-01

29

Es ist sauberer und einfacher 86400 :)

Die High-Tech-Weg hinzuzufügen ist zu tun:

$date = new DateTime($input_date); 
$date->modify('+1 day'); 
echo $date->format('Y-m-d'); 

aber das ist wirklich nur aus der Ferne lohnt sich, wenn Sie tun, sagen wir, eine Folge von Transformationen am Datum, anstatt nur morgen zu finden.

+1

Dumme CentOS hat nur PHP 5.1 , und DateTime wird in 5.2 eingeführt. Ich denke, ich muss dann endlich auf ein inoffizielles centos-php-Paket upgraden. – davr

+3

Er, nein. Das Hinzufügen von 86400 ist eine falsche Einfachheit. – staticsan

+0

Können Sie erklären, was Sie damit meinen? – chaos

16

Sie können die Zugabe direkt in strtotime tun geben, z.B.

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

Oh, ordentlich. Wusste das nicht. Es ist fast wie ein gutes altes Date :: Manip. – chaos

6

Eine andere Möglichkeit ist die Verwendung der Funktion mktime(). Es ist sehr nützliche Funktion ...

$date = "2007-02-28"; 
list($y,$m,$d)=explode('-',$date); 
$date2 = Date("Y-m-d", mktime(0,0,0,$m,$d+1,$y)); 

aber ich denke, strtotime() in dieser Situation besser ist ...

+0

schön, ich wusste nicht, dass mktime() den Monat so erhöhen würde, wenn Sie über –

5

Die einfachste Art und Weise ...

echo date('Y-m-d',strtotime("+1 day")); //from today 

oder von bestimmtem Datum ..

.
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 können Sie versuchen, diese unter besonders wenn man französisch sind

$date = date('l j F Y'); 
#increment the date 
$date2 = date('l j F Y', strtotime("+7 day")); 

in Französisch übersetzen Sie die setlocaleQ verwenden können() Funktion oder die Funktion unter:

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

/("1Monat") gehen = wird monatlich erhöht. // ("1day") = wird um Tag erhöht. // (Datum ("Y-m-d")) = Beginnen Sie, das Datum an Ihrem aktuellen Datum zu erhöhen. –

+2

Sie sollten Ihre Antwort so bearbeiten, dass sie die Erläuterung des Codes enthält, anstatt die Erläuterung in einem Kommentar zu enthalten. – astidham2003