Jak wyliczyć i pokazać datę godzinę powiększoną lub pomniejszoną o dowolną ilość dni godzin względem aktualnej lub innej daty godziny


[PHP] Jak wyliczyć i pokazać datę/godzinę powiększoną lub pomniejszoną o dowolną ilość dni/godzin względem aktualnej lub innej daty/godziny?

0x01 graphic

Chcesz wyliczyć jaka data lub godzina będzie za 16 dni lub przed 398 godzinami od teraz. Chcesz wyliczyć również jaka data lub godzina będzie za 450 godzin od dowolnej innej daty/godziny. Chcesz wreszcie wyliczać przesunięcia w czasie do przodu lub do tyłu z dokładnością co do sekundy.

0x01 graphic

Manipulowanie czasem w PHP jest bardzo wygodne i bez trudu możesz wyliczyć jaki rok, miesiąc lub dzień wypadł 6547 dni temu. Możesz też sprawdzić jaka godzina będzie po 4678 sekundach od podanej wcześniej pory dnia. Przesunięcia w czasie można wyliczać co do sekundy.

Wszystkie takie operacje mają ogromne znaczenie praktyczne. Łatwo sprawdzisz czy ogłoszenie straciło już ważność w serwisie ogłoszeniowym, czy użytkownik po 30 dniach wciąż ma prawo korzystać z płatnych informacji lub wyliczysz porę, po której informacja w serwisie nie jest już nowością, co pozwoli zrezygnować z napisu "nowość".

Oto kod, który wylicza przesunięcie o dowolną ilość sekund względem aktualnego dnia:

<?

$dzisiaj = date("Y").".".date("m").".".date("d");

$roznica=gmmktime()+60*60*24*3; // dodatkowe 3 dni

$nowadata = gmdate("Y",$roznica).".".

gmdate("m",$roznica).".".gmdate("d",$roznica);

echo "$dzisiaj - $nowadata";

?>

Wynik działania: 2004.05.15 - 2004.05.18

Funkcja date() zwraca aktualną datę lub godzinę, np. date("m") zwróci aktualny numer miesiąca. Domyślnie funkcja korzysta z aktualnego znacznika czasu, który można pobrać za pomocą funkcji mktime().

Funkcja date("m") działa identycznie jak date("m",mktime()). Skoro możemy podać znacznik czasu, nic nie stoi na przeszkodzie aby ten znacznik zwiększyć lub zmniejszyć.

Znacznik czasu zwracany jest w sekundach. Dlatego aby zwiększyć go o 3 dni, trzeba dodać 60 sekund pomnożone przez 60 (mamy już godziny) pomnożone przez 24 (co daje nam pełne dni) i dodatkowo pomnożone przez 3, co da w sumie znacznik czasu powiększony o 3 dni.

Na jego podstawie można już wyliczyć nową datę. Gdy zamiast plusa wstawisz minus, otrzymasz datę pomniejszoną o trzy dni.

Niektóre funkcje zaczynają się od przyrostka gm (gmdate i gmmktime) mają one identyczne znaczenie jak date i mktime, ale uwzględniają zmiany godzin w czasie letnim i zimowym.

Gdyby nie one, wyliczenia w niektórych wypadkach byłyby obarczone błędem wynikającym z dodania godziny i jej odjęcia dwa razy w roku. Stosując funkcje gm podczas przeliczeń można ustrzec się tego problemu.

Poniższy przykład wyznacza datę względem dowolnej innej daty:

<?

$znacznik = mktime(0,0,0,12,28,2002); // 2002.12.28

$znacznik2 = gmmktime(0,0,0,12,28,2002);

$dzien = date("Y",$znacznik).".".date("m",$znacznik).".".date("d",$znacznik);

$roznica=$znacznik2-60*60*24*32; // 32 dni wstecz

$nowadata = gmdate("Y",$roznica).".".

gmdate("m",$roznica).".".gmdate("d",$roznica);

echo "$dzien - $nowadata";

?>

Wynik działania: 2002.12.28 - 2002.11.26

Znacznik czasu możesz wyliczyć dla dowolnej daty podając w wywołaniu funkcji mktime() dowolny dzień i godzinę. Pierwsze trzy pozycje to godzina, minuta i sekunda, a kolejne trzy to miesiąc, dzień i rok.

Ponieważ nie korzystamy z minut przy obliczaniu różnicy dni, można je ustawić na 0. Teraz na podstawie znacznika ustalamy dzień początkowy, a dzień końcowy powstaje po zmodyfikowaniu go o określoną liczbę sekund, jak poprzednio.

Możesz też manipulować godzinami. Zasada jest identyczna jak w poprzednich przykładach, dochodzi tylko dodatkowe wywołanie funkcji date() odpowiedzialnych za wyliczenie godziny, minuty i sekundy.

<?

$dzisiaj = date("Y").".".date("m").".".date("d")

." - ".date("H").":".date("i").":".date("s");

$roznica=gmmktime()+765; // dodatkowe 765 sekund

$nowadata = gmdate("Y",$roznica).".".gmdate("m",$roznica).".".

gmdate("d",$roznica)." - ".gmdate("H",$roznica).":".

gmdate("i",$roznica).":".gmdate("s",$roznica);

echo "$dzisiaj - $nowadata";

?>

Wynik działania: 2004.05.15 - 02:05:39 - 2004.05.15 - 02:18:24

A teraz przesunięcie względem pełnej daty z godziną, tu również zasada jest taka sama, a zamiast zer podana jest dokładna godzina:

<?

$znacznik = mktime(23,53,11,12,28,2002); // 2002.12.28 - 23:53:11

$znacznik2 = gmmktime(23,53,11,12,28,2002);

$dzien = date("Y",$znacznik).".".date("m",$znacznik).".".date("d",$znacznik)

." - ".date("H",$znacznik).":".date("i",$znacznik).":".date("s",$znacznik);

$roznica=$znacznik2-60*60*24*10; // 10 dni wstecz

$nowadata = gmdate("Y",$roznica).".".gmdate("m",$roznica).".".

gmdate("d",$roznica)." - ".gmdate("H",$roznica).":".

gmdate("i",$roznica).":".gmdate("s",$roznica);

echo "$dzien - $nowadata";

?>

2002.12.28 - 23:53:11 - 2002.12.18 - 23:53:11

Jak widzisz, bez problemu można wyliczyć dowolny dzień i godzinę względem aktualnej daty bądź każdej innej, podanej przez Ciebie lub użytkownika. Wystarczy modyfikować w tym celu znacznik czasu o dowolną liczbę sekund.



Wyszukiwarka

Podobne podstrony:
Jak automatycznie pokazać datę ostatniej modyfikacji wybranego pliku lub strony WWW
Jak wyliczyć czas generowania strony WWW lub wykonywania skryptu z dokładnością do mikrosekundy
jak wyliczyc kiedy nastapi wschod i zachod slonca dla dowolnego dnia, PHP Skrypty
czyli jak powiedzieć, że A jest podobne do B, lub że A jest takie jak B
Niepewnosc w pracy Jak spokojnie przezyc osiem godzin 8godz
Jak wyliczyc strumien wody i pary kotlowej, UCZELNIA ARCHIWUM, UCZELNIA ARCHIWUM WIMiIP, Bilansowani
Jak wykryć i pokazać liczbę osób oglądających aktualnie stronę WWW, PHP Skrypty
Jak pobrać i pokazać aktualne notowania średnich kursów walut z NBP, PHP Skrypty
Jak wykonać rozbudowany system zapisujący usuwający użytkowników prenumeraty newslettera lub innej l
Jak zamienić numer IP na domenę lub domenę na numer IP, PHP Skrypty
Jak przyśpieszyć ładowanie systemu Windows Vista lub Windows 7
Jak wyliczać świadczenia chorobowe
Przykład wyliczenia opłaty za wprowadzanie gazów lub pyłów do powietrza z procesów spalania pa
WinToFlash jak stworzyc bootowalny pendrive z windows 7 vista lub xp a177 htm

więcej podobnych podstron