Cauchy - Szkoła Myślenia www.cauchy.pl//systemy/php-mysql/liczba-dni-do-okreslonej-daty/     |     Dodaj do ulubionych07 grudzień 2019

Łamigłówki podstawowa

|

Przedszkolaki

|

Kolorowanki

|

Rebusy

|

Krzyżówki

|

Wykreślanki

|

Algorytmy

|

Zabawy

Korepetycje, korepetycje z języka polskiego

Poprzednie PoprzednieDo góry, menu nadrzędne, lista zadań Lista wszystkich tematówNastępne Następne

Wyświetlanie liczby dni do określonej daty

Skrypty PHP, mySQL

Odmierzanie liczby dni do określonej daty
Często chcemy by nasza strona pokazywała ilość dni do określonego wydarzenia (urodzin, końca promocji, zaćmienia słońca, zaćmienia księżyca, itp.). Poniższy artykuł pokazuje jak zrealizować ten cel korzystając z języka PHP oraz udostępnia Tobie gotową funkcję zwracającą liczbę dni do interesującego Cię wydarzenia.
Jak posługiwać się artykułem
Niniejszy artykuł:
  1. Na początku opisuje funkcję w języku PHP zwracającą liczbę pozostałych dni do określonej daty.
    Tę funkcję możesz skopiować i wkleić do własnego programu i wykorzystywać dowolnie.
  2. Pokazuje sposób wykorzystania opisanej funkcji.
  3. Na końcu dokumentu znajdziesz pełną, przykładową stronę www wraz z kodem PHP odmierzającym dokładny czas do końca pełnego zaćmienia słońca 2 sierpnia 2027 roku.
    Strona ta wykorzystuje wcześniej napisaną funkcję.
    Możesz tą stronę wkleić do swojego serwisu, testować, zmieniać, dostosować do swoich potrzeb.
Opis funkcji ZwrocLiczbeDniDoWydarzenia
Co robi funkcja ZwrocLiczbeDniDoWydarzenia
Kluczem naszego programu jest funkcja PHP ZwrocLiczbeDniDoWydarzenia zadeklarowana jak poniżej:
 function ZwrocLiczbeDniDoWydarzenia ($data_wydarzenia) {
 }
 
Jej argumentem jest string (tekst) zawierający datę wydarzenia ($data_wydarzenia) w formacie jak poniżej:
      'Rok-Miesiąc-Dzień'
na przykład $data_wydarzenia może mieć wartość:
      '2027-08-02'
co oznacza 2 sierpnia 2027 roku (nastąpi wówczas całkowite zaćmienie słońca).
Funkcja ZwrocLiczbeDniDoWydarzenia zwraca nam liczbę dni jaka pozostała do wydarzenia zawartego w zmiennej $data_wydarzenia na przykład:
      5852
co oznacza, że do daty zawartej w zmiennej $data_wydarzenia pozostało 5852 dni.
Data aktualna
Najpierw tworzona przez nas funkcja ZwrocLiczbeDniDoWydarzenia potrzebuje pobrać aktualną datę. Funkcja PHP Date umożliwia pobrania daty w dowolnym formacie. My potrzebujemy format identyczny jak w dacie wydarzenia. Dlatego wywołujemy funkcję Date w sposób następujący:
 $data_aktualna = Date("Y-m-d");
 
Oznacza to, że:
  • Rok, miesiąc i dzień będą oddzielone myślnikami (-)
  • Rok będzie wyświetlany w postaci 4 znaków (Y)
  • Miesiąc będzie wyświetlany w postaci 2 znaków (m)
  • Dzień będzie wyświetlany w postaci 2 znaków (d)
Wszystko fajnie, tylko my potrzebujemy nie dwie daty a różnicę w dniach między dwiema datami.
Liczba sekund od 1 stycznia 1970 roku
Funkcja StrToTime oblicza ile minęło sekund od 1 stycznia 1970 roku. Nazwę tej funkcji można rozwinąć na Str To Time czyli Zamień String Na Czas. W ten sposób zamieniamy datę na liczbę sekund jaka upłynęła między datą a 1 stycznia 1970.
Dlatego teraz tworzymy dwie zmienne które obliczają ile sekund upłynęło od 1 stycznia 1970 roku dla obydwu naszych dat:
 $liczba_sekund_dla_wydarzenia = StrToTime($data_wydarzenia);
 $liczba_sekund_dla_aktualnej_daty = StrToTime($data_aktualna);
 
Różnica między datami w sekundach
Teraz wystarczy obliczyć różnicę miedzy zmiennymi $liczba_sekund_dla_wydarzenia oraz $liczba_sekund_dla_aktualnej_daty by mieć liczbę sekund jaka minęła między tymi datami:
 $liczba_sekund_miedzy_datami = 
       $liczba_sekund_dla_wydarzenia - $liczba_sekund_dla_aktualnej_daty;
 
Czy jest sens dalej liczyć?
Jeśli otrzymana zmienna $liczba_sekund_miedzy_datami jest ujemna to znaczy, że wydarzenie już nastąpiło. W tej sytuacji nie ma sensu dalej liczyć i zwracamy -1. Umawiamy się, że jeśli zwracamy -1 to oznacza, że aktualna data jest późniejsza niż data wydarzenia.
    if ($liczba_sekund_miedzy_datami<0)
       return -1;
 
Różnica między datami w dniach
Doba (dzień) to 24 godziny * 60 minut * 60 sekund co zapamiętamy w zmiennej $liczba_sekund_w_dniu. Zatem różnice między datami $liczba_sekund_miedzy_datami musimy podzielić przez $liczba_sekund_w_dniu by mieć liczbę dni między datami. Gdyby pojawił się ułamek w wyniku to funkcja PHP Floor dodatkowo zaokrągla nam otrzymaną liczbę dni do dołu. Zatem wyświetli się nam informacja, że do zaćmienia słońca pozostało 5852 dni zamiast 5852,72 dni.
 $liczba_sekund_w_dniu = 60 * 60 * 24;
 $liczba_dni_miedzy_datami = 
           Floor ($liczba_sekund_miedzy_datami/$liczba_sekund_w_dniu);
 
Zwracamy liczbę dni
Teraz wystarczy obliczoną liczbę dni zwrócić do funkcji nadrzędnej:
 return $liczba_dni_miedzy_datami;
 
Jak wykorzystać funkcję ZwrocLiczbeDniDoWydarzenia?
My sami musimy wiedzieć po co nam jest potrzebna liczba dni do określonej daty. Jeśli datą naszego wydarzenia jest pełne zaćmienie słońca które nastąpi 2 sierpnia 2027 roku to możemy po prostu wyświetlić informację ile dni pozostało do zaćmienia. Liczbę dni miedzy dziś a 2 sierpnia 2027 roku obliczy nam oczywiście funkcja ZwrocLiczbeDniDoWydarzenia:
 $data_wydarzenia = '2027-08-02';
 $liczba_dni_do_wydarzenia = 
                  ZwrocLiczbeDniDoWydarzenia ($data_wydarzenia);
 
 if ($liczba_dni_do_wydarzenia == -1)
    echo 'Niestety, całkowite zaćmienie słońca 2 
                   sierpnia 2027 roku już miało miejsce...<br />';
 else
    echo 'Całkowite zaćmienie słońca będzie 2 sierpnia 2027 roku. 
             Pozostało już tylko ' . $liczba_dni_do_wydarzenia 
             . ' dni!<br />';
 
Jeśli funkcja ZwrocLiczbeDniDoWydarzenia zwraca -1 to znaczy, że zaćmienie już nastąpiło, czyli, że dzisiejsza data jest późniejsza niż 2 sierpnia 2027 i wyświetlamy stosowny komunikat.
Plik z kodem programu
Wyżej omówiony program możesz pobrać tu jako gotowy plik php. Obrazuje wykorzystanie funkcji ZwrocLiczbeDniDoWydarzenia czyli wyświetla liczbę dni jaka pozostała do określonej daty (2 sierpnia 2027 - pełne zaćmienie słońca). Jest to strona www (spakowana programem zip) gotowa do umieszczenia w serwisie www - na przykład celem testów, mydyfikacji, przystosowania do swoich potrzeb. Powyższy plik wystarczy rozpakować i jako plik PHP umieścić w serwisie wwww. Program od razu będzie wyświetlał pozostałą liczbę dni do 2 sierpnia 2027 roku.
Cały kod programu
Poniżej pokazno powyższy kod strony www, która wyświetla tylko jedna linię: liczbę dni jako pozostała do 2 sierpnia 2027 roku kiedy nastąpi całkowite zaćmienie słońca (lub informacje, że zaćmienie słońca już nastąpiło). Oto pełna strona www:
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html>
 <head>
 <title>Serwis ABC</title>
 <meta http-equiv=content-type content="text/html; charset=iso-8859-2">
 <meta http-equiv="Content-Language" content="pl">
 </head>
 
 <body>
 
 <?php 
 $data_wydarzenia = '2027-08-02';
 $liczba_dni_do_wydarzenia = 
         ZwrocLiczbeDniDoWydarzenia ($data_wydarzenia);
 
 if ($liczba_dni_do_wydarzenia == -1)
    echo 'Niestety, całkowite zaćmienie słońca 2 sierpnia 2027 roku 
          już miało miejsce...<br />';
 else
    echo 'Całkowite zaćmienie słońca będzie 2 sierpnia 2027 roku. 
              Pozostało już tylko <strong>' . 
              $liczba_dni_do_wydarzenia . '</strong> dni!<br />';
 
 //////////////////////////////////////////////////////////////////////
 /////// Funkcja ZwrocLiczbeDniDoWydarzenia ($data_wydarzenia) ///////
 //Funkcja zwraca liczbe (zaokraglona do dolu) okreslajaca ile  dni
 //pozostalo do okreslonego wydarzenia zawartego w zmiennej 
 //$data_wydarzenia
 //Jesli $data_wydarzenia jest wczesniejsza niż data aktualna to fukcja
 //zwraca -1
 //Argument $data_wydarzenia powinie byc postaci:
 //        ‘Rok-Miesiąc-Dzień’
 //na przykład
 //        '2027-08-02'
 //co oznacza
 //        2 sierpnia 2027 roku 
 //Funkcja zwróci liczbę dni pozostałych do daty $data_wydarzenia, 
 //na przykład:
 //   5852
 //////////////////////////////////////////////////////////////////////
 function ZwrocLiczbeDniDoWydarzenia ($data_wydarzenia) {
    $data_aktualna = Date("Y-m-d");
 
    $liczba_sekund_dla_wydarzenia = StrToTime($data_wydarzenia);
    $liczba_sekund_dla_aktualnej_daty = StrToTime($data_aktualna);
 
    $liczba_sekund_miedzy_datami = $liczba_sekund_dla_wydarzenia 
                     - $liczba_sekund_dla_aktualnej_daty;
    if ($liczba_sekund_miedzy_datami<0)
       return -1;
 
    $liczba_sekund_w_dniu = 60 * 60 * 24;
    $liczba_dni_miedzy_datami = 
          Floor ($liczba_sekund_miedzy_datami/$liczba_sekund_w_dniu);
 
    return $liczba_dni_miedzy_datami;
 }
 
 ?>
 
 </body> 
 </html>
 
Przykładowy efekt działania programu
Poniżej przykład działania naszego kodu wyświetlającego liczbę dni do zaćmienia słońca:
Wyświetlanie liczby dni do określonej daty w serwisie www przy pomocy PHP.
Używaj kodu dowolnie
Kod zawarty w tym artykule możesz wykorzystywać dowolnie, bez żadnych zastrzeżeń. Jedyna prośba to umieszczenie linku do niniejszej strony:
   http://www.cauchy.pl/systemy/php-mysql/liczba-dni-do-okreslonej-daty/
na przykład w formie jak poniżej:
<a href="http://www.cauchy.pl/systemy/php-mysql/liczba-dni-do-okreslonej-daty/">Program i gotowa funkcja w języku PHP pokazująca ilość dni do określonej daty </a>

PoprzednieDo góry, menu nadrzędne, lista zadańNastępne
PoprzednieLista wszystkich tematówNastępne


Nie znalazłeś szukanej treści?
Poszperaj w serwisie cauchy.pl lub w sieci.
Google
 
Kurs przygotowujący do konkursów matematycznych w szkole podstawowej
 
 
Tapeta ze wzorami dotyczącymi logarytmów i funkcji logarytmicznej
 
Kurs przygotowujący do sprawdzianu szóstoklasisty z matematyki
 
(C) 2010 Szkoła Myślenia im. A. L. Cauchy        Napisz Napisz        Praca     Reklama
   korepetycje z języka niemieckiego