2009-12-17 6 views
11

Viele Beispiele sind Tage zu Tage hinzufügen. Aber wie soll ich es machen, wenn ich einen anderen Tag habe?Hinzufügen von Tagen zu bestimmten Tag

Zum Beispiel (funktioniert nicht):

$day='2010-01-23'; 

// add 7 days to the date above 
$NewDate= Date('$day', strtotime("+7 days")); 
echo $NewDate; 

Beispiel oben funktioniert nicht. Wie soll ich den Tag des Starts ändern, indem ich etwas anderes an die Stelle von Date stelle?

+2

ist '$ Tag' ein Tippfehler? Sie umschließen Variablen nicht in Anführungszeichen. – TravisO

Antwort

29

Für eine sehr einfache fix auf der Grundlage Ihrer Code:

$day='2010-01-23'; 

// add 7 days to the date above 
$NewDate = date('Y-m-d', strtotime($day . " +7 days")); 
echo $NewDate; 

Wenn Sie PHP verwenden 5.3+, können Sie die neue Datetime verwenden Bibliotheken, die sehr praktisch sind:

$day = '2010-01-23'; 

// add 7 days to the date above 
$NewDate = new DateTime($day); 
$NewDate->add(new DateInterval('P7D'); 
echo $NewDate->format('Y-m-d'); 

Ich habe vollständig auf DateTime selbst jetzt als es ist sehr leistungsfähig geschaltet. Sie können die Zeitzone beim Instanziieren auch einfach angeben, d. H. new DateTime($time, new DateTimeZone('UTC')). Sie können die Methoden add() und sub() verwenden, um das Datum mit DateInterval-Objekten zu ändern. Hier Dokumentation:

+0

$ NewDate-> addieren (neues DateInterval ('P7D'); - Sie müssen ein extra ')' am Ende hier hinzufügen :) – mmvsbg

1

Von php.com binupillai2003

<?php 
/* 
Add day/week/month to a particular date 
@param1 yyyy-mm-dd 
@param1 integer 
by Binu V Pillai on 2009-12-17 
*/ 

function addDate($date,$day)//add days 
{ 
$sum = strtotime(date("Y-m-d", strtotime("$date")) . " +$day days"); 
$dateTo=date('Y-m-d',$sum); 
return $dateTo; 
} 

?> 
+2

Während "$ date" technisch funktionieren kann, ist es eine schlechte Syntax, sagen Sie einfach $ date – TravisO

9
$NewDate = date('Y-m-d', strtotime('+7 days', strtotime($day))); 
+3

Dies wird nur Sekunden seit der Unix-Epoche ausgeben. –