PHP – jak pracovat s datem a časem
Po obráceném postupu výkladu v minulém díle tentokrát budeme opět postupovat tradiční cestou. V dnešním článku o tvorbě PHP se podíváme na to, jak se v PHP pracuje s datumem a časem.
Základní formát datumu a času v PHP je číslo, které udává počet sekund uplynulých od 1. ledna 1970. Aktuální hodnotu získáme voláním funkce Time (). Tato funkce nemá žádné parametry, proto jsou závorky prázdné. Ačkoliv čas v tomto formátu asi nebudeme ukazovat běžnému návštěvníkovi, má jednu velkou výhodu – dobře se s ním počítají např. časové rozdíly mezi dvěma okamžiky atd.
Přestože pro programátora je výše uvedený formát velmi příjemný, předtím, než ho naservírujeme našemu návštěvníkovi, musíme ho upravit do běžného tvaru (dny, měsíce, roky, hodiny, minuty, sekundy, den v týdnu atd.). K tomu v PHP slouží velmi univerzální funkce Date. Má dva parametry – řetězec udávající požadovaný formát výstupu a celé číslo udávající čas v „ošklivém“ tvaru, tj. jako počet sekund od 1. 1. 1970. Pokud druhý parametr vynecháme, použije se aktuální čas, výsledek je tedy stejný, jako kdybychom na místo druhého parametru napsali Time (). Aktuální čas můžeme za použití funkce Date vypsat třeba takto:
|
Výše uvedený příkaz vypíše aktuální čas v hodinách, minutách a sekundách (např. 21:45:03). Formátovací řetězec se skládá ze znaků, které zastupují např. počet hodin, minut, sekund (v naší ukázce H, i, s), a z ostatních znaků (v naší ukázce dvojtečky, dále se nám budou hodit např. mezery nebo čárky), které se v nezměněné podobě objeví ve výstupu. Zde je seznam speciálních znaků, které ve formátovacím řetězci můžeme použít:
|
Některé nedůležité znaky jsem vynechal, kompletní přehled najdou zájemci přímo v oficiálním PHP manuálu. Některé znaky nemusí fungovat ve starších verzích PHP. Vyzkoušejte si následující skript, kde jsou funkce Time a Date prakticky demonstrovány:
|
Vše by už mělo být jasné, vygenerování názvu českého měsíce včetně příslušného pádu je zajištěno polem $mesice naplněným příslušnými názvy.
Občas budeme stát před opačným problémem, než řeší funkce Date – budeme potřebovat převést datum v „tradičním“ formátu (tj. roky, měsíce, dny, hodiny, minuty, sekundy) převést na počet sekund od 1. 1. 1970, se kterým budeme dále pracovat. K tomu se hodí funkce MkTime. Ta má po řadě těchto šest číselných parametrů – hodiny, minuty, sekundy, měsíce, dny, roky. Parametry lze od konce vynechávat, doplní se na základě aktuálního času. Volání MkTime () má tedy stejný efekt jako Time (). Malý příklad – následující použití funkcí Date a MkTime má za následek vypsání 1. 7. 2000, 12:30:00:
|
Funkce MkTime si poradí i s nekorektně zadanými hodnotami a „přeteče“ je do vyššího řádu (tj. 30. února v nepřestupném ruce interpretuje jako 2. března apod.).
Shrnutí anebo co si je třeba pamatovat
- V PHP je čas vyjádřen jako počet sekund od 1. ledna 1970. Aktuální hodnotu času v tomto formátu vrací funkce Time ().
- K převodu času vyjádřeného v sekundách na tvar srozumitelný běžnému uživateli slouží funkce Date.
- Naopak k převodu běžného formátu na sekundový se hodí funkce MkTime.
V dalším díle si ukážeme, jak lze pomocí příkazu include vkládat do stránky kusy dalších kódů a jak si tímto způsobem ušetřit práci s údržbou rozsáhlejších webů.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Landing page: Jak vytvořit landing page s vysokým CTR
7. května 2024 -
Od iPhonu po Android: Ultra HDR přináší nový standard fotografií
1. listopadu 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024
Quagmire
Zář 19, 2010 v 13:35Díky, dost pomohlo. Stálo by za to se zmínit, že čas vracený funkcí time() je nejvhodndější formát času pro ukládání do databáze.
had
Dub 6, 2011 v 14:07možná by nebylo od věci zmínit problém týkající se roku 2038 – takže z hlediska dlouhodobých aplikací bych tvrzení „nejlepší formát pro ukládání do databáze“ radši vynechal :-)