KategorieProgramowanie

[PHP] Jak sprawdzić, ile dni miał poprzedni miesiąc?

Sprawdzić ile dni miał poprzedni miesiąc jest bardzo prostą operacją bowiem sprowadza się do cofnięcia o miesiąc od bieżącej daty i wywołania funkcji date z parametrem “t”. Poniżej przedstawię kilka sposobów na wykonanie tego zadania.

Sposób 1

Podstawową informacją jaką potrzebujemy to jak wyświetlić ilość dni w miesiącu i zadanie jest to bardzo proste, gdyż wystarczy wywołać funkcję date z parametrem t.

echo date('t');

W ten oto sposób dowiedzieliśmy się że ile dni posiada aktualny miesiąc. Krokiem drugim jest pobranie numeru aktualnego miesiąca.

echo date('m');

Znając aktualny miesiąc wystarczy odjąć od niego jeden aby cofnąć się do miesiąca poprzedniego. A jako iż potrzebujemy znacznika czasu tworzymy go funkcją mktime.

mktime(0, 0, 0, date('m') - 1, 1, date('Y'));

W ten oto sposób mamy znacznik czasu, który można przekazać jako drugi parametr funkcji date. W znaczniku czasu pierwsze trzy zera oznaczają godzinę, następnie zaś określany jest miesiąc od którego odejmuje się jedynkę. Kolejny parametr określa dzień i ostatni rok.

Ostatni krok to przekazanie znacznika do funkcji i wyświetlenie ilości dni.

echo date('t', mktime(0, 0, 0, date('m')-1, 1, date('Y')));

 

Sposób 2

Podobnie jak w sposobie pierwszym tutaj także wygenerujemy znacznik czasu, który będzie wskazywał na datę z poprzedniego miesiąca. Jednak tym razem do generowania znacznika czasu posłużymy się funkcją strtotime, której oprócz daty jako parametr możemy przekazać wyrażenie. Wyrażenia przekazywane do funkcji mogą dokonywać różnych operacji na datach, a w tym przypadku napiszemy wyrażenie odejmujące od bieżącej daty 1 miesiąc:

strtotime("-1 MONTH")

Powyższy przykład zwróci nam znacznik czasu dla daty z przed miesiąca, do czego właśnie dążymy, tak więc całe wywołanie które widzieliśmy w poprzednim rozwiązaniu będzie tym razem wyglądało następująco:

echo date('t', strtotime("-1 MONTH"));

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *