Powiedzmy, że mam datę w następującym formacie: 2010-12-11 (rok-pon-dzień)
W PHP chcę zwiększyć datę o jeden miesiąc i chcę, aby rok był automatycznie zwiększany, jeśli to konieczne (tj. Zwiększając od grudnia 2012 do stycznia 2013).
Pozdrowienia.
$time = strtotime("2010.12.11");
$final = date("Y-m-d", strtotime("+1 month", $time));
// Finally you will have the date you're looking for.
Potrzebowałem podobnej funkcjonalności, z wyjątkiem cyklu miesięcznego (plus miesiące, minus 1 dzień). Po pewnym czasie wyszukiwania SO, udało mi się stworzyć to rozwiązanie typu plug-and-play:
Przykład:
źródło
Użyj
DateTime::add
.Użyłem clone, ponieważ add modyfikuje oryginalny obiekt, co może nie być pożądane.
źródło
zwraca to znacznik czasu, którego można używać z funkcją daty
źródło
$time
ma wartość początkową).To zrekompensuje luty i pozostałe 31-dniowe miesiące. Możesz oczywiście zrobić o wiele więcej sprawdzania, aby uzyskać dokładniejsze dane dla formatów dat względnych „ten dzień w przyszłym miesiącu” (co niestety nie działa, patrz poniżej), a równie dobrze możesz użyć daty i godziny.
Obie
DateInterval('P1M')
istrtotime("+1 month")
zasadniczo na ślepo dodają 31 dni niezależnie od liczby dni w następnym miesiącu.źródło
Możesz użyć w
DateTime::modify
ten sposób:Zobacz dokumentacje:
http://php.net/manual/fr/datetime.modify.php
http://php.net/manual/fr/class.datetime.php
źródło
Używam w ten sposób: -
źródło
Najpierw ustaw format daty na 12-12-2012
Po użyciu tej funkcji działa poprawnie;
Tutaj 12-12-2012 to Twoja data, a +2 Miesiące to przyrost miesiąca;
Zwiększasz także rok, datę
Ans ma 12-12-2013
źródło
Dzięki Jason, twój post był bardzo pomocny. Sformatowałem go ponownie i dodałem więcej komentarzy, aby pomóc mi to wszystko zrozumieć. Na wypadek, gdyby to komuś pomogło, zamieściłem to tutaj:
źródło
Jeśli chcesz zwiększyć liczbę dni, możesz to również zrobić
źródło
Wystarczy zaktualizować odpowiedź za pomocą prostej metody znalezienia daty po upływie kilku miesięcy. Jako najlepsza odpowiedź zaznaczona nie daje poprawnego rozwiązania.
źródło
Przykłady użycia:
źródło
Dla każdego, kto szuka odpowiedzi na dowolny format daty.
Po prostu zmień format daty.
źródło
umieść datę w polu wprowadzania, a następnie kliknij przycisk pobierz dzień od daty w jquery
źródło
źródło
Wszystkie przedstawione rozwiązania nie działają poprawnie.
strtotime () i DateTime :: add lub DateTime :: modified dają czasami nieprawidłowe wyniki.
Przykłady:
- 31.08.2019 + 1 miesiąc daje 01.10.2019 zamiast 30.09.2019
- 29.02.2020 + 1 rok daje 01.03.2021 zamiast 28.02.2021
(testowane na PHP 5.5, PHP 7.3)
Poniżej moja funkcja oparta na pomyśle przesłanym przez Angelo, który rozwiązuje problem:
Przykłady użycia:
źródło