2012-03-26 10 views
50

Mam zmienną o nazwie $effectiveDate zawierającą datę 2012-03-26.Dodawanie trzech miesięcy do daty w PHP

Próbuję dodać trzy miesiące do tej daty i nie udało się na nim.

Oto co próbowałem:

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); 

i

$effectiveDate = strtotime(date("Y-m-d", strtotime($effectiveDate)) . "+3 months"); 

Co robię źle? Żaden fragment kodu nie działał.

+5

Co oznacza "nie działa"? – Jon

+2

Otrzymuję '1340649000' jako odpowiedź, która wydaje się być poprawna. – Dogbert

+0

Czy jesteś pewien, że '$ effectiveDate' przechowuje to, co Twoim zdaniem przechowuje? [Działa dla mnie] (http://codepad.org/nfHa8Oxx). – Josh

Odpowiedz

117

zmienić go na to daje oczekiwany format:

$effectiveDate = date('Y-m-d', strtotime("+3 months", strtotime($effectiveDate))); 
+0

Jak radzić sobie ze zmienną miesięcy? jak $ miesięcy zawiera liczbę miesięcy? '" + "$ miesięcy 'miesięcy" 'nie działa – HKK

+3

' $ przesunięcie = 5; echo date ('Ym-d', strtotime ("+ $ offset miesięcy", strtotime ('2000-01-01'))); '[Demo] (http://ideone.com/H8k7lt) –

+0

data() nie używaj lokalizacji. Lepiej jest strftime(). – user706420

0

Poniższa powinny działać, ale może trzeba zmienić format:

echo date('l F jS, Y (m-d-Y)', strtotime('+3 months', strtotime($DateToAdjust))); 
5

zakładam przez „nie praca "masz na myśli, że dajesz datownik zamiast sformatowanej daty, ponieważ robiłeś to poprawnie:

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); // returns timestamp 
echo date('Y-m-d',$effectiveDate); // formatted version 
2

Konwertuj datę na czytelną wartość. Możesz użyć strftime() lub date().

Spróbuj tego:

$effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); 
$effectiveDate = strftime ('%Y-%m-%d' , $effectiveDate); 
echo $effectiveDate; 

to powinno działać. Lubię używać strftime lepiej, ponieważ można go użyć do lokalizacji, możesz go wypróbować.

0

Można użyć klasy simpleDate z PHP Proste Bibliotek:

include('../code/simpleDate.php'); 
$date = new simpleDate(); 
echo $date->set($effectiveDate)->addMonth(3)->get(); 

Sprawdź library tutorials here.

2

Tchoupi's odpowiedź może być odrobinę mniej gadatliwy przez złączenie argument dla strtotime() w następujący sposób:

$effectiveDate = date('Y-m-d', strtotime($effectiveDate . "+3 months")); 

(ta opiera się na magii szczegółów implementacji, ale zawsze można iść spojrzeć na nich, jeśli jesteś słusznie nieufni)

0

Poniższy powinno działać, spróbuj tego.

$effectiveDate = strtotime("+1 months", strtotime(date("y-m-d"))); 
echo $time = date("y/m/d", $effectiveDate); 
0

po powinny działać

$d = strtotime("+1 months",strtotime("2015-05-25")); 
echo date("Y-m-d",$d); // This will print **2015-06-25**