Kuinka saada nykyinen aika php:ssä. Muunna päivämäärä ja aika aikaleimamuotoon

JavaScript on estetty selaimessasi. Ota JavaScript käyttöön, jotta sivusto toimii!

Päivämäärän ja kellonajan esitys

SISÄÄN hajautetut järjestelmät, kuten Internet, ajalla on erityinen rooli. Järjestelmän kellon pienestä poikkeamasta johtuen Forex-pelaaja voi menettää kymmeniä tuhansia dollareita muutamassa minuutissa; Business Intelligence -järjestelmä tekee virheen ennusteessaan; NNTP-palvelimet menetetään synkronoinnin aikana tärkeää tietoa, käyttäjän tarvitsema jne.

PHP sisältää monia toimintoja päivämäärän ja ajan kanssa työskentelemiseen. Eniten käytettyjä ovat:

  • aika()- palauttaa nykyisen absoluuttisen ajan. Tämä luku on yhtä suuri kuin sekuntien määrä, joka on kulunut 1. tammikuuta 1970 keskiyöstä (UNIX-aikakauden alusta).
  • getdate ()- lukee päivämäärä- ja aikatiedot. Palauttaa assosiatiivisen taulukon, joka sisältää tiedot määritetyltä tai nykyiseltä (oletusarvoisesti) ajalta. Taulukko sisältää seuraavat elementit:

    Esimerkki 1

    Käytä getdate() nykyinen aika foreach ($d as $key => $val) echo "$key = $val
    "; kaiku"
    Tänään: $d.$d.$d"; ?>

    ESIMERKIN 1 TULOS:

    Sekuntia = 21 minuuttia = 4 tuntia = 12 kk = 10 pv = 4 ma = 11 vuotta = 2005 vpäivä = 313 arkipäivää = torstai kuukausi = marraskuuta 0 = 1131613461 Tänään: 10.11.2005

  • Päivämäärä()- päivämäärän ja kellonajan muotoilu. Argumentit: muotomerkkijono ja absoluuttinen aika. Toinen argumentti on valinnainen. Palauttaa merkkijonon, jossa on annettu tai nykyinen päivämäärä määritetyssä muodossa. Muotomerkkijono voi sisältää seuraavat koodit:
    a
    AMukana merkintä "AM" tai "PM".
    dKuukauden päivä (01-31)
    DViikonpäivän lyhennetty nimi (kolme kirjainta)
    FKoko kuukauden nimi
    gKello (12 tunnin muoto ilman etunollia)
    GKello (24 tunnin muoto ilman etunollia)
    hKello (12 tunnin muoto)
    HKello (24 tunnin muoto)
    iMinuutit (00-59)
    jKuukauden päivä ilman etunollia (1-31)
    lViikonpäivän koko nimi
    LKarkausvuoden indikaattori (0 tai 1)
    mKuukausi (01-12)
    MLyhennetty kuukauden nimi (kolme kirjainta)
    nKuukausi (1-12)
    sSekunnit (00-59)
    tPäivien lukumäärä tietyssä kuukaudessa (28 - 31)
    UAbsoluuttinen aika
    w
    yVuosi (kaksi arvoa)
    YVuosi (neljä tasoa)
    zVuoden päivä (0-365)
    ZAikavyöhykkeen siirtymä sekunneissa (-43200 - 43200)

    Kaikki muut muotomerkkijonoon sisältyvät tiedot lisätään palautettuun merkkijonoon. Jos muotomerkkijonoon on lisättävä merkkejä, jotka ovat itse muotokoodeja, niitä edeltää kenoviiva "\". Merkkejä, joista tulee muotokoodeja, kun niihin liitetään kenoviiva, on edeltävä kaksi kauttaviivaa. Jos esimerkiksi haluat lisätä "n" merkkijonoon, sinun on kirjoitettava "\\n", koska "\n" on rivinvaihtomerkki.

    Esimerkki 2

    Käytetään päivämäärä()

    ESIMERKIN 2 TULOS:

    Tänään: 10.11.05 13:03

  • mktime()- palauttaa absoluuttisen ajan, jota voidaan sitten käyttää date()- tai getdate()-funktioiden kanssa. Ottaa enintään kuusi kokonaislukuargumenttia seuraavassa järjestyksessä:

    Katsella
    pöytäkirja
    sekuntia
    kuukausi
    kuukauden päivä
    vuosi

    Esimerkki 3

    mktime()

    ESIMERKIN 3 TULOS:

  • tarkistuspäivä()- päivämäärän oikeellisuuden tarkistaminen. Argumentit: kuukausi, päivä, vuosi. Palauttaa tosi, jos päivämäärä on oikea, ts.
    kuukausi - kokonaisluku 1 - 12;
    päivä on kokonaisluku, joka ei ylitä tietyn kuukauden päivien kokonaismäärää. Tässä tapauksessa karkausvuodet käsitellään oikein;
    vuosi on kokonaisluku väliltä 1 - 32767.

    Esimerkiksi:

    Jos (!tarkistuspäivä($kuukausi, 1, $vuosi)) ( $d = getdate(); $kuukausi = $d; $vuosi = $d; )

    Huomio! Päivämäärä voi olla kelvollisen alueen sisällä, mutta muut päivämääräfunktiot eivät hyväksy arvoa. Näin ollen mktime()-funktiota ei pitäisi käyttää vuosien aikana ennen vuotta 1902, ja sitä tulee käyttää varoen vuosien 1970 aikana.

  • strftime()- paikallisen päivämäärän ja ajan muodostus. Argumentit: muotomerkkijono ja absoluuttinen aika. Toinen argumentti on valinnainen. Palauttaa merkkijonon, jossa on annettu tai nykyinen päivämäärä määritetyssä muodossa. Tässä tapauksessa kuukausien ja viikonpäivien nimet poimitaan funktiolla valitusta alueesta. Muotomerkkijono voi sisältää seuraavat koodit:
    %aViikonpäivän lyhennetty nimi
    %AViikonpäivän koko nimi
    %bLyhennetty kuukauden nimi
    %BKoko kuukauden nimi
    %cEnsisijainen päivämäärän ja kellonajan muoto
    %CVuosisadan numero
    %dKuukauden päivä (1-31)
    %DSama kuin %m/%d/%y
    %eKuukausi (1-12)
    %hSama kuin %b
    %HKello (24 tunnin muoto)
    %IKello (12 tunnin muoto)
    %jVuoden päivä (0-365)
    %mKuukausi (1-12)
    %Mpöytäkirja
    %nUusi rivin merkki
    %p"am" tai "pm" merkintä mukana
    %rAika käyttäen a.m/p.m
    %RAika 24 tunnin muodossa
    %SSekunnit (00-59)
    %tTab-merkki
    %TSama kuin %H:%M:%S
    %uViikonpäivän numero (1 - maanantai, 7 - sunnuntai)
    %UViikon numero. Lähtölaskenta alkaa vuoden ensimmäisenä sunnuntaina
    %VViikkonumero ISO 8601:1988:n mukaan. Ensimmäisellä viikolla on oltava vähintään neljä päivää, ja maanantai katsotaan ensimmäisenä päivänä
    %WViikon numero. Lähtölaskenta alkaa vuoden ensimmäisestä maanantaista
    % wViikonpäivän numero (0 - sunnuntai, 6 - lauantai)
    %xEnsisijainen päivämäärämuoto ilman aikaa
    %XEnsisijainen kellonajan muoto ilman päivämäärää
    %yVuosi (kaksi arvoa)
    %YVuosi (neljä tasoa)
    %ZAikavyöhyke (nimi tai lyhenne)
    %% Symboli "%"

    Kaikki muut muotomerkkijonoon sisältyvät tiedot lisätään palautettuun merkkijonoon.

Päivämäärän ja ajan käyttäminen PHP:ssä on suhteellisen helppoa. Saatavuus on melkoinen Suuri määrä funktiot tekevät koodista vähemmän hankalaa (ja PHP 5.2:ssa DateTimen myötä ja 5.3:ssa DateInterval- ja DatePeriod-luokkien sekä yksittäisten menetelmien lisäämisen myötä päivämäärien käsittelystä on tullut entistä yksinkertaisempaa ja kätevämpää). Joten, jos haluat työskennellä päivämäärän kanssa... Ensinnäkin sinun tulee joka tapauksessa pitää mielessä, että:

  • lähes kaikki toiminnot voidaan tehdä useilla tavoilla;
  • kaikki koodi on kirjoitettu esittelyä ja työesimerkkejä varten;
  • ei aina tarjota vaihtoehtoinen tulos voi olla sopiva ylikäytettynä varhainen versio PHP (joskus helpompaa kuin monien vuosien takaisen toimivan koodin muokkaaminen);

PHP 5.3:ssa for oikea toiminta päivätty Strict Standards -virheiden välttämiseksi. Nykyään tämä tilanne otetaan yleensä huomioon joko skripteissä tai hosting-asetuksissa.

PHP muuntaa UNIX-aikaleiman päivämääräksi tietyssä muodossa

Yksi kaikista yksinkertaisia ​​tehtäviä. Käytetty funktio on: date($format, $time)
Ensimmäinen parametri välittää päivämäärämuodon - lisätietoja on dokumentaatiossa ("tavallinen" 28.02.2012 15:43:59 tulisi käyttää:
päivämäärä("d.m.Y H:i:s", $aika)

PHP kuinka selvittää huomisen/eilisen päivämäärä

Täälläkin kaikki on yksinkertaista. Time()-funktio saa nykyisen ajan UNIX Timestamp -muodossa. Vähennämme (eilisen päivämäärä) tai lisäämme (huomenna) tarvittavan määrän sekunteja (86400 = 3600*24 - päivissä) ja saamme:
$nyt = aika(); // ei vaadittu
$eilen = aika()-3600*24;
$huomenna = aika()+3600*24;
$viikkoEnnen = aika() - 3600*24*7; // viikko sitten
echo "Eilen: ",date("d.m.Y", $eilen),"
Huomenna:",date("d.m.Y",$huomenna);

PHP kuinka saada päivämäärä tietyllä siirrolla (X päivää aikaisemmin/myöhemmin)

Joskus sinun on selvitettävä päivämäärä, joka on useita päiviä määritetystä päivämäärästä. Esimerkiksi käyttäjä maksoi palvelusta 11.2.2013 3 viikon ajan. Maksutiedot ovat saatavilla. Mihin päivään asti se maksetaan?

Kun voit "vain" lisätä pari päivää ja saada 13. helmikuuta, menettely ei aiheuta erityisiä vaikeuksia. Entä erilaisia ​​määriä päivää kuukaudessa? Entä karkausvuodet? Kaikki on jo keksitty ennen meitä - laskeaksemme päivämäärän tunnetusta aikavälistä käytämme mktime

$maksu = array("päivä"=>11,"kuukausi"=>2,"vuosi"=>2013);
$toDate = mktime(0,0,0,$maksu["kuukausi"],$maksu["päivä"]+3*7,$maksu["vuosi"]);
echo date("d.m.Y",$toDate); // johtopäätös
// PHP > 5.3 käyttämällä DateIntervalia
date_default_timezone_set("Eurooppa/Moskova");
$päiväysaika = new DateTime(päivämäärä());
$datetime->sub(new DateInterval("P7D")); // miinus 7 päivää

PHP kuinka laskea päivämäärien välinen ero

Tilanne näyttää yksinkertaiselta - on kaksi päivämäärää, laske päivien määrä (kuukaudet ja päivät) niiden välillä. "Manuaalinen" toteutus kestää kuitenkin jonkin aikaa, ja on mahdollista, että jotain jää paitsi (hupiksi - kokeilevat voivat jättää koodin kommentteihin). PHP:ssä on sisäänrakennettu date_diff-funktio, joka laskee päivämäärien välisen eron, tai tarkemmin Datetime::diff
$datetime1 = new DateTime("2013-05-01");
$datetime2 = new DateTime("2013-01-01");
$väli = $päiväysaika1->diff($datetime2);
echo $interval->format("%R%a päivää uudenvuoden jälkeen");

PHP muuntaa DDD-päivät X vuodeksi Y kuukaudeksi Z vuodeksi

Joskus sinun on näytettävä aika tietyn tapahtuman jälkeen. Esimerkiksi rekisteröinnin jälkeen se meni ohi. Mukavuussyistä (3 200 päivää ei merkitse paljon) havainto voidaan muuntaa vuosiksi ja kuukausiksi DateInterval::format-muotoilulla
$registerDate = new DateTime("2009-03-03");
$tänään = new DateTime();
$väli = $tänään->diff($rekisteröintipäivä);
echo "Rekisteröimisestä kulunut: ";
echo $interval->format("%a päivää")."\n"; // päivien kokonaismäärä
echo "tai";
echo $interval->format("%m kuukautta, %d päivää"); // kuukautta, päivää

PHP-käännös päivämäärästä aikaleimaan - jäsennyspäivämäärä venäläisessä muodossa

Joskus päivämäärä on muutettava helposti luettavassa muodossa UNIX TIMESTAMP -muotoon. Voit jäsentää päivämäärän muodossa '2013-05-30 12:35' sen komponentteiksi (hakee erikseen vuosi, kuukausi, päivä). ), voit käyttää date_parse-funktiota. Voit muuntaa suoraan unix-aikaleimaan käyttämällä strtotimea (sekä muunnelmia, kuten "nyt", "+1 päivä", "seuraava torstai" - php.net/manual/en/datetime.formats.php):
echo strtotime("2013-05-30");
print_r (date_parse("2013-05-30 12:35"));

Venäjälle tutumpi muoto on kuitenkin DD.MM.YYYY. Voit tietysti jakaa päivämäärän pistesymbolilla, saada päivän, kuukauden, vuoden ja käyttää mktime-funktiota vastaavan UNIX TIMESTAMP -arvon selvittämiseen. PHP5.3 esitteli funktion date_parse_from_format, johon voit välittää muotomerkkijonon. Ja PHP5.2:lle käytin strptimea (jonka olemassaolosta, kuten kävi ilmi, kaikki eivät ole tietoisia, ehkä siksi, että sitä ei yksinkertaisesti ole toteutettu Windowsille: Tätä toimintoa ei ole toteutettu Windows-alustoilla):

$date = "05/30/2013 12:35";
$muoto = "d.m.Y H:i";
print_r (päivämäärän_parsi_muodosta($muoto,$päiväys));
// Vaihtoehtoinen vaihtoehto PHP 5.2:lle
$muoto = "%d.%m.%Y %H:%M"; // erilainen kuin päivämääräfunktiossa käytetty
$d = strptime($päivämäärä, $muoto);
$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;

Lisäksi strptime-funktiossa on erityispiirteitä - kuukautta siirretään yhdellä (tammikuu - 0), ja vuosi on vuosien lukumäärä vuodesta 1900, ts. vuodelle 2013 $d['tm_year'] on yhtä suuri kuin 113.

Linkkejä ja hyödyllistä tietoa:
PHP dateTime -funktiot http://www.php.net/manual/en/ref.datetime.php - funktiot päivämäärän kanssa työskentelemiseen
PHP-luokka 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

On selvää, että ohjelmoijien on usein pakko työskennellä päivämäärän ja ajan kanssa. Yksinkertaisin esimerkki on päivämäärä ja kellonaika, jolloin viesti lähetettiin keskustelupalstalla. Ja tietysti sellaisia ​​asioita voidaan toteuttaa PHP, varsinkin kun mahdollisuuksia on työskennellä päivämäärän ja ajan kanssa PHP:ssä niin monta.

Perustoiminto, joka liittyy päivämäärä ja aika PHP:ssä, - Tämä time()-funktio, joka palauttaa siitä kuluneiden sekuntien määrän keskiyö 1.1.1970(ajan synty Unix):

kaikuaika();
?>

Käynnistetään tämä käsikirjoitus, Saat selville, kuinka monta sekuntia on kulunut siitä keskiyö 1.1.1970 puheluun asti time()-funktiot käsikirjoituksessasi.

Tietysti tämän lisäksi perustoiminto, joka on läsnä kaikilla ohjelmointikielillä missä voit työskennellä päivämäärän ja ajan kanssa(Kirjoittaja vähintään, tuntemieni joukossa), on toinenkin toiminto nimeltä getdate ():

$datetime = getdate();
foreach ($datetime muodossa $k=>$v)
echo "$k - $v
";
?>

Suorittamalla tämän skriptin näet joukon avaimia taulukossa ja niitä vastaavat arvot (samaan aikaan toistimme rakenteen jokaiselle). Uskon, että nyt sinun ei ole vaikeaa saada selville mitään asiaan liittyviä tietoja päivämäärä ja aika. Esimerkiksi nykyisen ajan näyttämiseksi kirjoitat seuraavan koodin:

$datetime = getdate();
echo $datetime["tunnit"].":".$datetime["minuutit"].":".$datetime["sekuntia"];
?>

Myös getdate()-funktiot on valinnainen parametri, joka tarkoittaa, kuinka monta sekuntia siitä on kulunut keskiyö 1.1.1970. Se on tehty siten, että tämä toiminto voi palauttaa paitsi nykyisen kellonajan ja päivämäärän, myös yleisesti ottaen minkä tahansa:

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

Tuloksena näet 1974 vuosi.

On myös päivämäärä()-funktio. Suosittelen katsomaan sen kuvausta hakuteoksesta, koska tämä toiminto hyväksyy erittäin monimutkaisen parametrin, joka määrittää päivämäärän tulostusmuodon. Muotoiluelementtejä on hieman yli 30. Ja alla olevassa esimerkissä annan niistä muutaman ja katson loput hakuteoksesta, koska sinun ei tarvitse opetella niitä ulkoa, mutta on erittäin suositeltavaa tutustua niihin. Mutta on tarpeen tietää niiden käytön periaate ja seuraava esimerkki siitä:

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

Tämän seurauksena näet jotain tällaista: " Tänään 15.11.2010 21:44:24". Myös date()-funktiot On myös toinen valinnainen parametri, joka määrittää aikaleima, täsmälleen sama arvo kuin siitä kuluneiden sekuntien määrä keskiyö 1.1.1970. Esimerkki toisen parametrin käytöstä:

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

On myös gmdate()-funktio, joka on täydellinen analogi date()-funktiot, Mutta gmdate()-funktio näyttää kellonajan ei sen palvelimen aikavyöhykkeen mukaan, jolla komentosarja on käynnissä, vaan sen mukaan Greenwich. Ilmeisesti tätä toimintoa käyttämällä sinun on tallennettava kaikki tiedot päivämäärästä ja kellonajasta, jotka käyttäjä näkee, ja tulostettaessa sinun on mukauduttava kunkin käyttäjän aikavyöhykkeeseen (ihannetapauksessa tietysti):

echo gmdate("Nyt Greenwichissä D M j H:i:s T Y")
?>

Tämän seurauksena näet jotain tällaista: " Ma 15. marraskuuta 18:52:45 GMT 2010"Tietenkin näet eri päivämäärän, mutta samassa muodossa. Suosittelen myös lämpimästi, että menet käsikirjaan ja tutustut vain muihin päivämäärä- ja aikaelementteihin PHP(Annoin vain kolmanneksen), koska date()- ja gmdate()-funktiot- tämä on yksinkertaisin ja eniten nopea tapa saada päivämäärä ja aika melkein missä tahansa muodossa.

Katsotaanpa joitain koodia oikealta verkkosivulta ja luodaan ensimmäinen PHP-skriptimme, eli näytämme päivämäärän ja kellonajan sivustollamme. Tätä skriptiä käytetään melko usein verkkosivustoilla ja uskon, että siitä on hyötyä monille.

Luodaan toinen php-tiedosto ja kutsutaan tätä tiedostoa time.php. Tutkimme sitä aiemmin, jos unohdit, toista se.

Joten loimme time.php-tiedoston ja asetimme tämän tiedoston aiemmin luotuun myphp-kansioon osoitteessa . Tutkimme tätä aihetta oppitunnilla

Avaa time.php-tiedoston koodi ja tagien väliin Ja kirjoita seuraava koodi: Listaus 1:

Listaus 1.

Tänään:

Nykyinen aika

Aloitetaan Paikallinen palvelin, soita osoitekenttä selaimen osoite http://localhost/myphp/time.php ja paina Enter. Ja näemme tämän kuvan:

Kiinnitän huomionne siihen tosiasiaan tässä tapauksessa nykyinen palvelimen aika näytetään, nuo. jos esimerkiksi palvelin, jolla sivustosi "asuu", sijaitsee toisessa maassa ja nykyinen aika eroaa Moskovasta, myös näytettävä aika eroaa Moskovasta.

Katsotaanpa koodia Listaus 1. Tavalliset tekstitunnisteet " Tänään"ja" Nykyinen aika PHP-esiprosessori ei käsittele niitä ja ne tulostetaan muodossa "on". Näiden merkintöjen sijasta voit kirjoittaa mitä tahansa tekstiä, esim. Päivämäärä tai Aika jne.

Ja tässä on php-koodi kuvaajien sisälläPHP käsittelee sen ennen kuin se annetaan selaimelle.

Kuten luultavasti jo ymmärsit, päivämäärätoiminto PHP:ssä vastaa päivämäärän ja kellonajan tulostamisesta. Päivämäärän ja kellonajan näyttöarvot näkyvät suluissa. PHP:ssä on paljon tällaisia ​​arvoja, ja on välttämätöntä jäsentää ja tutkia ne kaikki mahdollisia arvoja, omistamme seuraavan erillisen oppitunnin.

Kaikuoperaattori käännetään nimellä peruuttaa, tässä tapauksessa tarkoitamme näyttöä näyttöruudulla Päivämäärä Ja Palvelimen aika.

Sama tulos (näyttö selaimessa) voidaan saavuttaa sijoittamalla koko skripti PHP-kuvaajien sisään. Katso Listaus 2:

Listaus 2.

echo "Tänään:" ;
kaikupäivämäärä (" j F Y ") ;
echo "Nykyinen aika" ;
kaikupäivämäärä("H:i:s");
?>

Kaikki tekstielementtejä tulostettaviksi tarkoitetut on laitettava lainausmerkkeihin. Tekstijonot voidaan sulkea sekä yksittäisiin että kaksoislainausmerkit, puhumme erosta myöhemmin. Viestit:

kaiku "Tänään" ;

kaiku "Tänään" ;

ovat täysin samanlaisia ​​ja näyttävät samalta.

Välilyöntiä ennen viimeistä lainausmerkkiä käytetään erottamaan päivämääräfunktion tulos ympäröivästä tekstistä. Kaikki PHP:n komennot erotetaan aina puolipisteellä.

Näytä päivämäärä ja aika sivustolla lisäämällä koodi Listaus 1 tai Listaus 2 V Oikea paikka Web-sivusi. Voit antaa merkinnöille (päivämäärä ja aika) yleisen suunnittelutyylin sivustolle.

P.S. Haluan muistuttaa, että tiedostossa, johon sijoitat PHP-lisäosat, on oltava tunniste .php, ja lisäksi isännöinnin, jolla sivustosi "asuu", on tuettava PHP:tä (tämä on nykyään melkein kaikki