2012-05-14 15 views
8

Ich schrieb dieses Stück Code, um das aktuelle Datum + 2 Monate anzuzeigen:Aktuelles Datum + 2 Monate

<?php 
    $date = date("d/m/Y"); 
    $date = strtotime(date("d/m/Y", strtotime($date)) . "+2 months"); 
    $date = date("d/m/Y",$date); 
    echo $date; 
?> 

Es scheint nicht zu arbeiten, wie es zeigt: 1970.01.03.

Was mache ich falsch?

Danke für Ihre Hilfe.

EDIT:

Nach Kommentare und Antworten zu lesen, ich vereinfacht und korrigiert es.

<?php 
    $date = date("d/m/Y", strtotime(" +2 months")); 
    echo $date; 
?> 
+0

Versuchen Sie, ein Leerzeichen vor Ihre '+ 2' zu setzen. Und vielleicht zwei Variablen verwenden - den gleichen Variablennamen immer wieder für verschiedene Arten von Daten verwenden ist verwirrend und schlechte Praxis. – Crontab

+0

Die korrekte Rückgabewertprüfung hilft ebenfalls. – hakre

Antwort

21

Sie verpassen das zweite Argument für den zweiten strtotime() Aufruf:

echo date('d/m/Y', strtotime('+2 months')); 
+1

Seien Sie besonders vorsichtig, wenn Sie Strotime verwenden. Am 31. Juli ergibt das Datum ('dmY') "31072014", während das Datum ('dmY', strotime ('- 1 Monat')) "01072014" ergibt (ich erwartete "30062014"). – AaL

3

Versuchen des DateTime object mit:

$date = new DateTime("+2 months"); 
echo $date->format("d/m/Y"); 
+1

Korrekt, aber nicht relevant für den Fall. –

+0

Warum ist diese Antwort nicht relevant? Nur neugierig @StanislavShabalin –

+0

@MuhammadIbnuh Um ehrlich zu sein, kann ich mich nicht erinnern oder es fünf Jahre später herausfinden :-) Vielleicht weil warum 'DateTime' verwenden, wenn Sie bereits' strtotime' haben und es ist in Ordnung, nur einen Tippfehler zu beheben in der angenommenen Antwort. –

1

Wenn heute "YYYY-mm-31" und Der nächste Monat hat nicht den 31. Tag, Es wird der nächste Monat des Tages angezeigt, damit das System "+3 Monate" statt "+2 Monate" anzeigt. So

Ich denke, dies ist die Sicherheit:

$end_date=date("Y-m-d",strtotime("+2 month",strtotime(date("Y-m-01",strtotime("now"))))); 

Ändern Sie das Datum auf den ersten Tag zuerst.