Zaczynam od daty, 2010-05-01
a kończę na 2010-05-10
. Jak mogę iterować wszystkie te daty w PHP?
207
Wymaga PHP5.3:
$begin = new DateTime('2010-05-01');
$end = new DateTime('2010-05-10');
$interval = DateInterval::createFromDateString('1 day');
$period = new DatePeriod($begin, $interval, $end);
foreach ($period as $dt) {
echo $dt->format("l Y-m-d H:i:s\n");
}
Spowoduje to wygenerowanie wszystkich dni w zdefiniowanym okresie między $start
i $end
. Jeśli chcesz dołączyć 10., ustaw$end
11. Możesz dostosować format do swoich potrzeb. Zobacz Podręcznik PHP dla DatePeriod .
$begin->setTime(0,0); $end->setTime(12,0);
lub inicjowanie z godziną dnia początkowego, ponieważ każda późniejsza niż data końcowa będzie zawierać datę końcową w pętli. Nie jest to najbardziej stylowa poprawka, ale jest to najlepsza opcja, o ile nie ma odpowiedniej flagi.Dotyczy to również ostatniej daty
Jeśli nie potrzebujesz ostatniej daty, po prostu usuń
=
warunek.źródło
$begin
będzie inaczej . Ta pętla modyfikuje obiekt utworzony przeznew DateTime( "2015-07-03" )
. Dlatego powinieneś używać wersji DateTimeImmutable. Ale potrzebujesz dalszych modyfikacji, aby z nich korzystać.Konwersja na uniksowe znaczniki czasu ułatwia robienie matematyki dat w php:
Jeśli używasz PHP ze strefą czasową z czasem letnim, pamiętaj, aby dodać czas, który nie jest 23:00, 00:00 lub 1:00, aby zabezpieczyć się przed dniami pomijania lub powtarzania.
źródło
Skopiuj z próbki php.net dla zakresu obejmującego :
źródło
lub
źródło
Oto kolejna prosta -
Przykład:
źródło
Użyj tej funkcji: -
Wywołanie użycia / funkcji: -
Zwiększ o jeden dzień:
Wzrost według miesiąca: -
użyj trzeciego parametru, jeśli chcesz ustawić format daty: -
źródło
Oto sposób:
Wynikiem $ weekendsInMoth jest szereg dni weekendowych!
źródło
Możesz również iterować w ten sposób:
$_POST['date']
Może być wgnieciony z Twojej aplikacji lub witryny Zamiast tego$_POST['date']
możesz również umieścić tutaj swój ciąg"21-12-2019"
. Oba będą działać.źródło
Jeśli używasz Laravela i chcesz używać węgla, poprawnym rozwiązaniem byłoby:
Pamiętaj, aby dodać:
źródło
źródło