Mam zmienną o nazwie $effectiveDate
zawierającą datę 2012-03-26 .
Próbuję dodać trzy miesiące do tej daty i nie udało mi się.
Oto, czego próbowałem:
$effectiveDate = strtotime("+3 months", strtotime($effectiveDate));
i
$effectiveDate = strtotime(date("Y-m-d", strtotime($effectiveDate)) . "+3 months");
Co ja robię źle? Żaden fragment kodu nie działał.
1340649000
odpowiedź, która wydaje się być poprawna.$effectiveDate
przechowuje to, co myślisz, że przechowuje? U mnie to działa .date('Y-m-d', 1340661600)
podaje,2012-06-26
co JEST poprawne.Odpowiedzi:
Zmień to tak, aby uzyskać oczekiwany format:
$effectiveDate = date('Y-m-d', strtotime("+3 months", strtotime($effectiveDate)));
źródło
"+ '$months' months"
nie działa$offset = 5; echo date('Y-m-d', strtotime("+$offset months", strtotime('2000-01-01')));
DemoTa odpowiedź nie jest dokładnie na to pytanie. Ale dodam to, ponieważ to pytanie nadal jest możliwe do wyszukania, jak dodać / odjąć okres od daty.
$date = new DateTime('now'); $date->modify('+3 month'); // or you can use '-90 day' for deduct $date = $date->format('Y-m-d h:i:s'); echo $date;
źródło
Zakładam, że przez „nie zadziałało” masz na myśli, że zamiast sformatowanej daty podajesz sygnaturę czasową, ponieważ robiłeś to poprawnie:
$effectiveDate = strtotime("+3 months", strtotime($effectiveDate)); // returns timestamp echo date('Y-m-d',$effectiveDate); // formatted version
źródło
Musisz przekonwertować 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ć.
źródło
Odpowiedź Tchoupi może być odrobinę mniej rozwlekła, konkatenując argument funkcji strtotime () w następujący sposób:
$effectiveDate = date('Y-m-d', strtotime($effectiveDate . "+3 months") );
(Zależy to od szczegółów implementacji magii, ale zawsze możesz je obejrzeć, jeśli słusznie nie masz zaufania).
źródło
Poniższe powinno działać, spróbuj tego:
$effectiveDate = strtotime("+1 months", strtotime(date("y-m-d"))); echo $time = date("y/m/d", $effectiveDate);
źródło
Następujące powinno działać
$d = strtotime("+1 months",strtotime("2015-05-25")); echo date("Y-m-d",$d); // This will print **2015-06-25**
źródło
Dodaj n-ty dni, miesiące i lata
$n = 2; for ($i = 0; $i <= $n; $i++){ $d = strtotime("$i days"); $x = strtotime("$i month"); $y = strtotime("$i year"); echo "Dates : ".$dates = date('d M Y', "+$d days"); echo "<br>"; echo "Months : ".$months = date('M Y', "+$x months"); echo '<br>'; echo "Years : ".$years = date('Y', "+$y years"); echo '<br>'; }
źródło
Poniższe powinny działać, ale może być konieczna zmiana formatu:
echo date('l F jS, Y (m-d-Y)', strtotime('+3 months', strtotime($DateToAdjust)));
źródło