2009-12-17 10 views
11

Wiele przykładów dotyczy dodawania dni do dnia dzisiejszego. Ale jak to zrobić, jeśli mam inny dzień opatrzności?Dodawanie dni do określonego dnia

Dla przykładu (nie pracuje)

$day='2010-01-23'; 

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

powyższym przykładzie nie działa. Jak powinienem zmienić dzień opatrzności, umieszczając coś innego w miejscu daty?

+2

jest '$ dni' literówka? nie zawijasz zmiennych w cudzysłowach. – TravisO

Odpowiedz

29

na bardzo podstawowym poprawki w oparciu o kodzie:

$day='2010-01-23'; 

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

Jeśli używasz PHP 5.3+, można wykorzystać nowy DateTime biblioteki, które są bardzo przydatne:

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

Mam w pełni przełączam się teraz na używanie DateTime, ponieważ jest bardzo wydajny. Możesz także łatwo określić strefę czasową podczas tworzenia instancji, tj. new DateTime($time, new DateTimeZone('UTC')). Można użyć metod add() i sub() do zmiany daty za pomocą obiektów DateInterval. Oto dokumentacja:

+0

$ NewDate-> add (new DateInterval ('P7D'); - na końcu musisz dodać dodatkowy ")" :) – mmvsbg

1

Od 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

Podczas gdy "$ date" może technicznie działać, to słaba składnia, po prostu powiedz $ date – TravisO

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

To będzie wyświetlało tylko sekundy od epoki unix. –