Čas serveru PHP je aktuální. Php pracuje s daty - date DateTime mktime a další...

Je zřejmé, že programátoři velmi často musí pracovat s datem a časem. Nejjednodušším příkladem je datum a čas odeslání zprávy na fórum. A takové věci se samozřejmě dají realizovat na PHP, zejména proto, že existují příležitosti pro práce s datem a časem v PHP tolik.

Základní funkce související s datum a čas v PHP, - Tento funkce time()., která vrací počet sekund, které od té doby uplynuly půlnoci 1.1.1970(zrození éry Unix):

echo time();
?>

Spuštěním tohoto skriptu zjistíte, kolik sekund od té doby uplynulo půlnoci 1.1.1970 až do okamžiku hovoru funkce time(). ve vašem skriptu.

Samozřejmě kromě této základní funkce, která je přítomna ve všech programovacích jazycích, kde můžete pracovat s datem a časem(alespoň mezi těmi, které znám) existuje další funkce tzv getdate():

$datetime = getdate();
foreach ($datetime jako $k=>$v)
echo „$k – $v
";
?>

Spuštěním tohoto skriptu uvidíte sadu klíčů v poli a jejich odpovídající hodnoty (zároveň jsme zopakovali konstrukci pro každého). Myslím, že nyní pro vás nebude těžké zjistit jakékoli související údaje datum a čas. Chcete-li například zobrazit aktuální čas, napište následující kód:

$datetime = getdate();
echo $datetime["hodiny"]..":".$datetime["minuty"]..":".$datetime["sekundy"];
?>

Taky funkce getdate(). existuje volitelný parametr, který znamená počet sekund, které od té doby uplynuly půlnoci 1.1.1970. Je vyrobena tak, aby tato funkce mohla vrátit nejen aktuální čas a datum, ale obecně řečeno jakékoli:

$datetime = getdate(152353232);
echo $datetime["rok"];
?>

Ve výsledku uvidíte 1974 rok.

Existuje také funkce date().. Doporučuji podívat se na její popis v referenční knize, protože tato funkce má velmi složitý parametr, který určuje výstupní formát data. Existuje o něco více než 30 formátovacích prvků. A v níže uvedeném příkladu jich uvedu několik a na zbytek se podívám v referenční knize, protože si je nemusíte pamatovat, ale je velmi vhodné se s nimi seznámit. Je však nutné znát princip jejich použití a následující příklad:

echo date("Dnes d.m.Y H:i:s");
?>

V důsledku toho uvidíte něco takového: " Dnes 15.11.2010 21:44:24". Taky funkce date(). Existuje také druhý volitelný parametr, který specifikuje časové razítko, přesně hodnotu rovnající se počtu sekund, které od té doby uplynuly půlnoci 1.1.1970. Příklad použití druhého parametru:

echo date("Bylo jednou d.m.Y H:i:s", 5393235329);
?>

Existuje také funkce gmdate()., což je úplný analog funkce date()., Ale funkce gmdate(). ukazuje čas ne podle časového pásma serveru, na kterém skript běží, ale podle Greenwich. Je zřejmé, že pomocí této funkce musíte uložit všechny informace o datu a čase, které uživatel vidí, a při výstupu se musíte přizpůsobit časovému pásmu každého uživatele (ideálně samozřejmě):

echo gmdate("Nyní v Greenwichi D M j H:i:s T Y")
?>

V důsledku toho uvidíte něco takového: " Pon 15. listopadu 18:52:45 GMT 2010"Samozřejmě uvidíte jiné datum, ale v podobném formátu. Důrazně také doporučuji, abyste si přešli do referenční knihy a seznámili se s ostatními prvky data a času v PHP(dal jsem jen třetinu), od funkce date() a gmdate().- toto je nejjednodušší a nejrychlejší způsob získat datum a čas téměř v jakémkoli formátu.

JavaScript je ve vašem prohlížeči blokován. Povolte prosím JavaScript, aby stránka fungovala!

Reprezentace data a času

V distribuovaných systémech, jako je internet, hraje čas zvláštní roli. Kvůli mírné nesrovnalosti v systémových hodinách může Forexový hráč ztratit desítky tisíc dolarů během několika minut; systém business intelligence udělá chybu při vytváření prognózy; Servery NNTP ztratí důležité informace potřebné pro uživatele během procesu synchronizace atd.

PHP obsahuje mnoho funkcí pro práci s datem a časem. Nejpoužívanější jsou:

  • čas()- vrátí aktuální absolutní čas. Toto číslo se rovná počtu sekund, které uplynuly od půlnoci 1. ledna 1970 (od začátku éry UNIXu).
  • getdate()- čte informace o datu a čase. Vrátí asociativní pole obsahující informace pro zadaný nebo aktuální (ve výchozím nastavení) čas. Pole obsahuje následující prvky:

    Příklad 1

    Pomocí getdate() $val) echo "$klíč = $val
    "; echo"
    Dnes: $d.$d.$d"; ?>

    VÝSLEDEK PŘÍKLADU 1:

    Sekundy = 21 minut = 4 hodiny = 12 mden = 10 wden = 4 pon. = 11 rok = 2005 yden = 313 všední den = čtvrtek měsíc = listopad 0 = 1131613461 Dnes: 11/10/2005

  • datum()- formátování data a času. Argumenty: formátovací řetězec a absolutní čas. Druhý argument je volitelný. Vrátí řetězec s daným nebo aktuálním datem v zadaném formátu. Formátovací řetězec může obsahovat následující kódy:
    A
    AVčetně označení „AM“ nebo „PM“.
    dDen v měsíci (01-31)
    DZkrácený název dne v týdnu (tři písmena)
    FNázev celého měsíce
    GHodiny (12hodinový formát bez úvodních nul)
    GHodiny (24hodinový formát bez úvodních nul)
    hHodiny (12hodinový formát)
    HHodiny (24hodinový formát)
    iMinuty (00-59)
    jDen v měsíci bez úvodních nul (1–31)
    lCelé jméno dne v týdnu
    LIndikátor přestupného roku (0 nebo 1)
    mMěsíc (01-12)
    MZkrácený název měsíce (tři písmena)
    nMěsíc (1–12)
    sSekundy (00-59)
    tPočet dní v daném měsíci (od 28 do 31)
    UAbsolutní čas
    w
    yRok (dvě pozice)
    YRok (čtyři úrovně)
    zDen v roce (0-365)
    ZPosun časového pásma v sekundách (-43200 až 43200)

    Jakékoli další informace obsažené ve formátovacím řetězci budou vloženy do vráceného řetězce. Pokud potřebujete do formátovacího řetězce přidat znaky, které jsou samy o sobě formátovacími kódy, musí jim předcházet zpětné lomítko "\". Znakům, které se po připojení zpětným lomítkem stanou kódy formátu, musí předcházet dvě lomítka. Pokud například potřebujete k řetězci přidat „n“, musíte zadat „\\n“, protože „\n“ je znak nového řádku.

    Příklad 2

    Použití data()

    VÝSLEDEK PŘÍKLADU 2:

    Dnes: 10.11.05 13:03

  • mktime()- vrátí absolutní čas, který pak lze použít s funkcemi date() nebo getdate(). Přebírá až šest celočíselných argumentů v následujícím pořadí:

    Hodinky
    minut
    sekundy
    Měsíc
    den v měsíci
    rok

    Příklad 3

    Použití mktime()

    VÝSLEDEK PŘÍKLADU 3:

  • checkdate()- kontrola správnosti data. Argumenty: měsíc, den, rok. Vrátí true, pokud je datum správné, tj.
    měsíc - celé číslo od 1 do 12;
    den je celé číslo nepřesahující celkový počet dní v daném měsíci. V tomto případě jsou přestupné roky zpracovány správně;
    rok je celé číslo od 1 do 32767.

    Například:

    If (!checkdate($month, 1, $year)) ( $d = getdate(); $month = $d; $year = $d; )

    Pozornost! Datum může být v platném rozsahu, ale jiné funkce data tuto hodnotu nepřijmou. Proto by mktime() neměl být používán roky před rokem 1902 a měl by být používán s opatrností roky před rokem 1970.

  • strftime()- vytvoření místního data a času. Argumenty: formátovací řetězec a absolutní čas. Druhý argument je volitelný. Vrátí řetězec s daným nebo aktuálním datem v zadaném formátu. V tomto případě jsou názvy měsíců a dnů v týdnu extrahovány z národního prostředí vybraného pomocí funkce. Formátovací řetězec může obsahovat následující kódy:
    %AZkrácený název dne v týdnu
    %ACelé jméno dne v týdnu
    %bZkrácený název měsíce
    %BNázev celého měsíce
    %CPreferovaný formát data a času
    %CČíslo století
    %dDen v měsíci (1–31)
    %DStejný jako %m/%d/%y
    %EMěsíc (1–12)
    %hStejný jako %b
    %HHodiny (24hodinový formát)
    %IHodiny (12hodinový formát)
    %jDen v roce (0-365)
    % mMěsíc (1–12)
    %Mminut
    %nNový řádek znak
    %pzahrnuta notace „dopoledne“ nebo „odpoledne“.
    %rČas pomocí notace dopoledne/odpoledne
    %RČas ve 24hodinovém formátu
    %SSekundy (00-59)
    %tZnak tabulátoru
    %TStejný jako %H:%M:%S
    %uČíslo dne v týdnu (1 - pondělí, 7 - neděle)
    %UČíslo týdne. Odpočítávání začíná první neděli v roce
    %PROTIČíslo týdne podle ISO 8601:1988. První týden musí mít alespoň čtyři dny a za první den se považuje pondělí
    % WČíslo týdne. Odpočítávání začíná první pondělí v roce
    % hmČíslo dne v týdnu (0 - neděle, 6 - sobota)
    %XPreferovaný formát data bez času
    %XPreferovaný formát času bez data
    %yRok (dvě pozice)
    %YRok (čtyři úrovně)
    %ZČasové pásmo (název nebo zkratka)
    %% Symbol "%"

    Jakékoli další informace obsažené ve formátovacím řetězci budou vloženy do vráceného řetězce.

Podívejme se na část kódu ze skutečné webové stránky a vytvoříme náš první PHP skript, konkrétně na našem webu zobrazíme datum a aktuální čas. Tento skript se na webových stránkách používá poměrně často a myslím, že bude pro mnohé užitečný.

Vytvořme další php soubor a nazvěme tento soubor time.php. Studovali jsme to dříve, pokud jste zapomněli, zopakujte to.

Vytvořili jsme tedy soubor time.php a umístili tento soubor do dříve vytvořené složky myphp na adrese . Toto téma jsme studovali v lekci

Otevřete kód souboru time.php a mezi tagy A

napište následující kód: Výpis 1:

Výpis 1.

Dnes:

Aktuální čas

Spustíme místní server, do adresního řádku prohlížeče zadejte adresu http://localhost/myphp/time.php a stiskněte Enter. A vidíme tento obrázek:

Upozorňujeme, že v tomto případě je zobrazen aktuální čas serveru, těch. pokud se například server, na kterém váš web „žije“, nachází v jiné zemi a aktuální čas se liší od času v Moskvě, bude se zobrazená hodnota času lišit také od Moskvy.

Podívejme se na kód Výpis 1. Běžné textové štítky " Dnes" A " Aktuální čas" nejsou zpracovávány preprocesorem PHP a jsou na výstupu jako "je". Místo těchto záznamů můžete napsat libovolný text, například jen datum nebo Čas atd.

A zde je php kód uzavřený v deskriptorechPřed předáním do prohlížeče je zpracován PHP.

Jak jste již pravděpodobně pochopili, funkce data v PHP odpovědný za odeslání data a času. Hodnoty zobrazení data a času jsou uvedeny v závorkách. Takových hodnot je v PHP spousta a této analýze a studiu všech možných hodnot budeme věnovat další samostatnou lekci.

Operátor echo se překládá jako ustoupit, v tomto případě máme na mysli zobrazení na obrazovce monitoru datum A Čas serveru.

Stejného výsledku (zobrazení v prohlížeči) lze dosáhnout umístěním celého skriptu do PHP deskriptorů. Dívej se Výpis 2:

Výpis 2.

echo "Dnes:" ;
datum echa ("j F Y");
echo "Aktuální čas" ;
echo date("H:i:s");
?>

Všechny textové prvky určené pro výstup musí být uzavřeny v uvozovkách. Textové řetězce mohou být uzavřeny buď v jednoduchých nebo dvojitých uvozovkách, o rozdílu si povíme později. Příspěvky:

echo "Dnes" ;

echo "Dnes" ;

jsou zcela ekvivalentní a budou vypadat stejně.

Znak mezery před koncovou uvozovkou se používá k oddělení výstupu funkce datum od okolního textu. Všechny příkazy v PHP jsou vždy odděleny středníkem.

Chcete-li na webu zobrazit datum a čas, vložte kód Výpis 1 nebo Výpis 2 na správné místo na vaší webové stránce. Chcete-li dát nápisům (Datum a Čas) obecný styl designu webu, můžete použít.

P.S.

Připomínám, že soubor, do kterého umístíte PHP inserty, musí mít příponu .php a navíc hosting, na kterém váš web „žije“, musí PHP podporovat (dnes je to téměř vše

  • Práce s datem a časem v PHP je poměrně snadná. Přítomnost poměrně velkého množství funkcí činí kód méně těžkopádným (a v PHP 5.2 s příchodem DateTime a v 5.3 s přidáním tříd DateInterval a DatePeriod a jednotlivých metod se práce s daty stala ještě jednodušší a pohodlnější ). Takže pracovat s daty... Za prvé, v každém případě byste měli mít na paměti, že:
  • téměř každou akci lze provést několika způsoby;
  • veškerý kód je napsán pro ukázky a příklady práce;

Navrhovaný alternativní výsledek nemusí být vždy vhodný při použití dřívější verze PHP (někdy jednodušší než úprava pracovního kódu před mnoha lety);

V PHP 5.3 pracovat správně s daty, aby se předešlo chybám Strict Standards. Dnes se s touto situací zpravidla počítá buď ve skriptech, nebo v nastavení hostingu.

PHP převést UNIX časové razítko na datum v daném formátu
Jeden z nejjednodušších úkolů. Použitá funkce je: date($format, $time) 28.02.2012 15:43:59 Prvním parametrem je předání formátu data – další podrobnosti naleznete v dokumentaci (pro „obvyklý“
by se mělo použít:

datum("d.m.Y H:i:s", $time)

PHP jak zjistit zítřejší/včerejší datum
I zde je vše jednoduché. Funkce time() získá aktuální čas ve formátu UNIX Timestamp. Odečteme (včerejší datum) nebo přičteme (zítra) požadovaný počet sekund (86400 = 3600*24 - ve dnech) a získáme:
$včera = čas()-3600*24;
$zítra = čas()+3600*24;
$weekBefore = time() - 3600*24*7; // před týdnem
echo "Včera: ",datum("d.m.Y", $včera),"
Zítra:",datum("d.m.Y",$zítra);

PHP, jak získat datum s konkrétním offsetem (X dní dříve/později)

Někdy potřebujete zjistit datum, které bude několik dní od zadaného. Uživatel například zaplatil za službu 11. února 2013 na 3 týdny. Informace o platbě jsou k dispozici. Do jakého data se platí?

Když můžete „jen“ přidat pár dní a dostanete 13. února, postup nezpůsobuje žádné zvláštní potíže. Ale co rozdílný počet dní v měsíci? A co přestupné roky? Vše již bylo vynalezeno před námi - pro výpočet data ze známého intervalu použijeme mktime

$platba = array("den"=>11,"měsíc"=>2,"rok"=>2013);
$toDate = mktime(0,0,0,$platba["měsíc"],$platba["den"]+3*7,$platba["rok"]);
echo date("d.m.Y",$toDate); // závěr
// v PHP > 5.3 pomocí DateInterval
date_default_timezone_set("Evropa/Moskva");
$datetime = new DateTime(date());
$datetime->sub(new DateInterval("P7D")); // mínus 7 dní

PHP jak vypočítat rozdíl mezi daty

Zdá se, že situace je jednoduchá - jsou dvě data, spočítejte počet dní (měsíců a dnů) mezi nimi. „Ruční“ implementace však nějakou dobu zabere a existuje šance, že něco přehlédnete (pro zábavu – kdo chce zkusit, může kód zanechat v komentářích). PHP má vestavěnou funkci date_diff pro výpočet rozdílu mezi daty, přesněji Datetime::diff
$datetime1 = new DateTime("2013-05-01");
$datetime2 = new DateTime("2013-01-01");
$interval = $datetime1->diff($datetime2);
echo $interval->format("%R%a dní po Novém roce");

PHP převede DDD dní na X let Y měsíců Z let

Někdy je potřeba zobrazit čas po určité události. Například po registraci to prošlo. Pro pohodlí (3200 dní neznamená mnoho) lze vnímání převést na roky a měsíce pomocí formátování DateInterval::format
$registerDate = new DateTime("2009-03-03");
$dnes = new DateTime();
$interval = $dnes->diff($Datum registrace);
echo "Uplynulo od registrace: ";
echo $interval->format("%a dní")."\n"; // celkový počet dní
echo "nebo";
echo $interval->format("%m měsíců, %d dnů"); // měsíce, dny

PHP překlad z data do časového razítka - analýza data v ruském formátu

Někdy je potřeba převést datum ve formátu, který je snadno čitelný, do formátu UNIX TIMESTAMP Chcete-li analyzovat datum ve formátu '2013-05-30 12:35' do jeho součástí (samostatně získat rok, měsíc, den. ), můžete použít funkci date_parse. Chcete-li převést přímo na unixové časové razítko, můžete použít strtotime (stejně jako varianty jako 'nyní', '+1 den', 'příští čtvrtek' - php.net/manual/en/datetime.formats.php):
echo strtotime("2013-05-30");
print_r (date_parse("2013-05-30 12:35"));

Pro Rusko je však známější formát DD.MM.RRRR. Můžete samozřejmě rozdělit datum znakem tečky, získat den, měsíc, rok a pomocí funkce mktime zjistit odpovídající hodnotu UNIX TIMESTAMP. PHP5.3 zavedlo funkci date_parse_from_format, do které můžete předat formátovací řetězec. A pro PHP5.2 jsem použil strptime (jehož existence, jak se ukázalo, si ne každý uvědomuje, možná proto, že to prostě není implementováno pro Windows: Tato funkce není implementována na platformách Windows):

$datum = "30.05.2013 12:35";
$format = "d.m.Y H:i";
print_r (date_parse_from_format($format,$date));
// alternativní možnost pro PHP5.2
$formát = "%d.%m.%Y %H:%M"; // odlišný od toho, který se používá ve funkci datum
$d = strptime($datum, $format);
$newDate = mktime($d["tm_hour"], $d["tm_min"], $d["tm_sec"],
$d["tm_mon"]+1, $d["tm_mday"], $d["tm_year"]+1900); // tm_mon 0-11, tm_year 1900
echo $newDate;

Funkce strptime má navíc speciální vlastnosti - měsíc je posunut o jedničku (leden - 0) a rok je počet let od roku 1900, tzn. pro rok 2013 bude $d[’tm_year’] roven 113.

Odkazy a užitečné informace:
PHP funkce dateTime http://www.php.net/manual/en/ref.datetime.php - funkce pro práci s datem
Třída PHP DateTime http://www.php.net/manual/en/class.datetime.php
PHP date_diff http://www.php.net/manual/en/function.date-diff.php
PHP strftime http://ru2.php.net/manual/en/function.strftime.php
PHP date_parse_from_format http://ru2.php.net/manual/en/function.date-parse-from-format.php

Mezi různými programovacími úlohami jsou různé manipulace s hodnotami data a času zcela běžné. Vzácný automatizovaný systém nebo databáze se obejde bez ukládání informací o čase určitého procesu. Kromě jednoduchého přidání data do databázového záznamu nebo zobrazení tohoto data existuje mnoho úkolů, jak tato data zobrazit v různých podobách, zkontrolovat, zda aktuální čas odpovídá danému časovači, vypočítat období mezi dvěma daty a mnoho dalšího.

Pro snazší práci s daty má každý programovací jazyk své vlastní speciální datové typy pro ukládání hodnot data a času. Nejčastěji se jedná o číselnou hodnotu, buď celé číslo, nebo hodnotu s plovoucí desetinnou čárkou.

V PHP se práce s daty nejčastěji setkává s UNIXOVÝM TIMESTAMPEM. Zde je čas uložen jako celé číslo. Počítání času začíná 1. ledna 1970. Proto například datum a čas 12/11/2014 19:40:00 bude reprezentován číslem 1418316000. Toto číslo ukazuje, kolik sekund uplynulo od nultého data 1. ledna 1970, nazývaného Unixová epocha.

Příklad stránky PHP, která poskytuje možnosti konverze dat, je uveden na webu v sekci programy s programem "Převést formát data a času". Zde můžete vygenerovat požadované datum ve formátu UNIX TIMESTAMP a také tento formát převést do standardní, pro člověka čitelné podoby.

Získání aktuálního času a data v PHP

Chcete-li získat aktuální čas serveru, použijte funkci

int time (void)

který vrátí hodnotu ve formátu unixového časového razítka.

echo time(); // výstup aktuálního času ve formátu unixového časového razítka

Na první pohled není formát pro člověka příliš vhodný, ale jak víte, čím jednodušší je prezentace dat, tím rychleji počítač tyto hodnoty zpracovává. Uložení čísla do databáze je navíc mnohem levnější než použití jakéhokoli speciálního formátu. PHP také funguje v průběhu času stejně na platformách Unix i Windows, což umožňuje použít kód na kterékoli z těchto platforem.

Převést formát data a času v PHP

Nejjednodušší mechanismus pro převod číselné hodnoty data na srozumitelnější hodnoty poskytuje funkce:

pole getdate()

Vrací asociativní pole obsahující informace o datu. Pokud parametr časové razítko není zadán, bude vrácen aktuální čas. Toto pole obsahuje následující hodnoty:

Výsledné pole umožňuje zobrazit hodnoty v požadovaném tvaru:

$datum = 1418372345;
$datum_mas = getdate($datum);
echo $date_mas["mday" ] . "." $date_mas["po" ] . "." $date_mas["rok" ]; // 12.12.2014


Funkci můžete také použít pro převod formátu data a času:

string date(string $template [, int $unix_timestamp])

Je navržen tak, aby získal aktuální datum unixového časového razítka v požadovaném formátu. Řetězcový parametr $template určuje výstupní formát. Parametr $unix_timestamp lze použít k určení, se kterou časovou hodnotou se má pracovat. Je volitelný, takže pokud není zadán, použije se aktuální datum a čas.

Formát je určen následujícími hodnotami:

A„před“ a „po“ poledni: „dopoledne“ nebo „odpoledne“
A"před" a "po" poledne velkými písmeny: "AM" nebo "PM"
dden v měsíci 2 číslicemi (pokud je menší než 10, je na prvním místě nula) (01 až 31)
Dden v týdnu 3 písmeny. Například „Po“ (pondělí)
jden v měsíci, 1-2 číslice bez úvodních nul (od 1 do 31)
Fnázev měsíce. Například "leden"
hhodinový, 12hodinový formát (01 až 12)
Hhodina, 24hodinový formát (00 až 23)
Ghodinový, 12hodinový formát bez nul (1 až 12)
Ghodinový, 24hodinový formát bez nul (0 až 23)
iminuty (00 až 59)
já (velké i)1, pokud je aktivní letní čas, jinak 0
L1, pokud je rok přestupný, nebo 0, pokud to není přestupný rok
Bčas v internetovém časovém formátu (alternativní systém denní doby) (od 000 do 999)
Tčasové pásmo počítače. Například MDT
l (malé L)den v týdnu. Například „pondělí“
mměsíc, dvě číslice s nulami (01 až 12)
nměsíc, jedna nebo dvě číslice bez nul (od 1 do 12)
Mzkrácený název měsíce. Například "Jan"
tpočet dní v daném měsíci (od 28 do 31)
ssekund (0 až 59)
Sanglická dvoupísmenná řadová přípona ("st", "nd", "rd" nebo "th")
Ucelé číslo počet sekund od začátku epochy UNIX
yrok, digitální, 2 číslice (14)
Yrok, digitální, 4 číslice (2014)
zpořadové číslo dne v roce (od 0 do 365)
Zposun časového pásma v sekundách (-43200 až 43200)
Npořadové číslo dne v týdnu od 1 (pondělí) do 7 (neděle) v souladu s normou ISO-8601, (přidáno v PHP 5.1.0)
wpořadové číslo dne v týdnu od 0 (neděle) do 6 (sobota)
Wpořadové číslo týdne v roce v souladu s normou ISO-8601; týdny začínají v pondělí (přidáno v PHP 4.1.0)
Óčíslo roku podle normy ISO-8601. Má stejný význam jako Y, kromě případů, kdy číslo týdne ISO (W) pochází z předchozího nebo následujícího roku; pak se použije rok daného týdne. (přidáno v PHP 5.1.0)
Ekód měřítka časového pásma. Například: UTC, GMT, Atlantik/Azory (přidáno v PHP 5.1.0)
Órozdíl oproti greenwichskému času v hodinách. Například: +0200
Prozdíl od Greenwichského středního času s dvojtečkou mezi hodinami a minutami. Například: +02:00 (přidáno v PHP 5.1.3)
Cdatum ve standardním formátu ISO 8601, například 2014-12-15:19:21+00:00 (přidáno v PHP 5).
rdatum ve formátu » RFC 2822 Například: Čt, 21. prosince 2000 16:01:07 +0200.
Upočet sekund, které uplynuly od začátku epochy Unixu (The Unix Epoch, 1. ledna 1970 00:00:00 GMT)

Jak můžete vidět ze seznamu, pomocí této funkce můžete získat mnoho užitečných datových údajů. Například:

$datum = 1418372345; // počáteční datum a čas 12/12/2014 11:19:05

echo date("d.m.Y" , $datum); // 12.12.2014 (datum)
echo date("H:i:s" , $datum); // 11:19:05 (čas)
echo datum("H:i" , $datum); // 11:19 (čas)
echo date("t" , $datum); // 31 (počet dní v měsíci)
echo date("z" , $datum); // 345 (řadové číslo dne v roce)
echo date("l dS \of F Y h:i:s A" , $datum); // Pátek 12. prosince 2014 11:19:05

Ostatní znaky obsažené ve vzoru budou vytištěny tak, jak jsou na řádku. Pokud potřebujete zadat znak, který se používá ve funkci jako kód formátu, vloží se před něj znak „\“. Pro hodnotu "\n" (znak nového řádku) byste měli zadat "\\n". Můžete tak vytisknout celou zprávu obsahující informace o datu a čase:

echo datum ( "Dnes je z. den ytého roku", $datum); // Dnes je 345. den roku 2014

Převeďte datum a čas do formátu časového razítka

Chcete-li převést datum zpět ze standardního formátu na číselnou hodnotu časového razítka, použijte funkci:

int mktime(]]]]]])

Funkce mktime() vrací unixovou časovou hodnotu odpovídající datu a času určenému jejími argumenty. Například:

$my_date = mktime(10, 30, 0, 12, 12, 2014);

Měli byste si dát pozor na pořadí argumentů funkce: hodiny, minuty, sekundy, měsíc, den, rok.

Kromě jednoduchého generování hodnoty data do časového razítka lze funkci mktime() použít k aritmetickému provádění s daty. Chcete-li to provést, stačí zadat potřebné argumenty. Pokud například zadáte 14. měsíc, pak v konečné hodnotě bude měsíc 2. a hodnota roku se zvýší o jednu:

$my_day = 12;
$můj_měsíc = 12;
$my_rok = 2014;

$new_date = mktime(0, 0, 0, $my_month + 5, $my_day, $my_year);

echo date("d.m.Y" , $new_date); // 05/12/2015 (datum)

Totéž můžete udělat s dalšími parametry.

Kontrola platnosti data v PHP

Při práci s daty, zejména při generování data pomocí výše navržené funkce mktime(), je nutné brát ohled na správnost zadaného data. PHP k tomu používá funkci:

bool checkdate (int měsíc, int den, int rok)

Vrátí hodnotu true, pokud je datum zadané argumenty správné; jinak vrátí false. Datum se považuje za správné, pokud:

Rok v rozsahu od 1 do 32767;

Měsíc se pohybuje od 1 do 12;

Správně je uveden den pro daný měsíc s přihlédnutím k přestupným rokům.

Příklad kontroly data:

$my_day = 32;
$můj_měsíc = 12;
$my_rok = 2014;

if (!checkdate($my_month, $my_day, $my_year))
echo "Chyba: datum je nesprávné";




Horní