Localtime: Kuinka tietää nykyinen aika Perlissa

click fraud protection

Perl on kätevä sisäänrakennettu toiminto nykyisen päivämäärän ja ajan löytämiseksi skripteistäsi. Kun puhumme ajan löytämisestä, puhumme kuitenkin ajasta, joka on tällä hetkellä asetettu komentosarjaa käyttävälle koneelle. Esimerkiksi, jos suoritat Perl-skriptiä paikallisella koneella, paikallinen aika palauttaa asettamasi nykyisen ajan ja todennäköisesti asetetun nykyiselle aikavyöhykkeelle.

Kun suoritat saman komentosarjan verkkopalvelimella, saatat huomata, että työajan järjestelmän paikallisaika on pois päältä. Palvelin voi olla eri aikavyöhykkeellä tai se on määritetty väärin. Jokaisella koneella voi olla täysin erilainen käsitys siitä, mikä on paikallisaika, ja se voi viedä joitain säätöjä joko komentosarjan sisällä tai itse palvelimella saadaksesi sen vastaamaan odotettavissa olevaa.

Paikallisuustoiminto palauttaa luettelon täynnä dataa nykyisestä ajasta, joista osa on tarpeen säätää. Suorita alla oleva ohjelma ja näet kaikki luettelossa olevat elementit tulostettuna riville ja erotettu välilyönneillä.

instagram viewer
#! / Usr / local / bin / perl
@timeData = paikallisaika (aika);
tulosta liittyä ('', @timeData);

Sinun pitäisi nähdä jotain samanlaista, vaikka lukumäärä voi olla hyvin erilainen.

20 36 8 27 11 105 2 360 0

Nämä nykyisen ajan elementit ovat järjestyksessä:

  • Sekuntia minuutin päästä
  • Minuuttia tunnin yli
  • Tunnit keskiyön jälkeen
  • Kuukauden päivä
  • Vuotta alkavat kuukaudet
  • Vuosien lukumäärä vuodesta 1900
  • Päivien lukumäärä viikon alusta (sunnuntai)
  • Päivien lukumäärä vuoden alusta
  • Olipa vai ei kesäaika on aktiivinen

Joten jos palaamme esimerkkiin ja yritämme lukea sitä, huomaat, että on 27. joulukuuta 2005 kello 8:36:20, se on 2 päivää aiemmin sunnuntaina (tiistaina) ja 360 päivää sen jälkeen kun vuosi. Kesäaika ei ole aktiivinen.

Perl-paikannusajan lukeminen

Joitakin joukosta elementtejä, jotka paikallisia aikoja palauttaa, on vähän hankala lukea. Kuka kuvittelisi kuluvaa vuotta 1900: n viimeisten vuosien lukumääränä? Katsotaanpa esimerkkiä, joka tekee päivämäärän ja kellonajan selkeämmäksi.

 #! / Usr / local / bin / perl

 @months = qw (tammi helmikuu maaliskuuta huhtikuuta touko kesäkuuta heinäkuuta elokuuta syyskuuta lokakuuta marraskuun joulukuuta);

 @weekDays = qw (su ma ti ke to to pe la su su);

 ($ sekunti, $ minuutti, $ tunti, $ dayOfMonth, $ kuukausi, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = paikallisaika ();

 $ vuosi = 1900 + $ yearOffset;

 $ theTime = "$ tunti: $ minuutti: $ toinen, $ weekDays [$ dayOfWeek] $ kuukautta [$ kuukausi] $ dayOfMonth, $ vuosi";

 tulosta $ theTime; 

Kun suoritat ohjelman, sinun pitäisi nähdä paljon luettavissa oleva päivämäärä ja aika kuten:

 9:14:42, ke 28. joulukuuta 2005 

Joten mitä teimme tämän luettavan version luomiseksi? Ensin valmistellaan kaksi taulukkoa, joissa on kuukausien ja viikonpäivien nimet.

 @months = qw (tammi helmikuu maaliskuuta huhtikuuta touko kesäkuuta heinäkuuta elokuuta syyskuuta lokakuuta marraskuun joulukuuta);

 @weekDays = qw (su ma ti ke to to pe la su su); 

Koska paikallisaikafunktio palauttaa nämä elementit arvoissa, jotka vaihtelevat välillä 0-11 ja 0-6, ne ovat täydellisiä ehdokkaita taulukkoon. Paikallisuunnan palauttamaa arvoa voidaan käyttää numeerisena osoitteena oikean elementin käyttämiseen taulukossa.

 $ kuukautta [$ kuukautta] $ viikkoPäivät [$ dayOfWeek]


Seuraava vaihe on saada kaikki arvot paikallisaikatoiminnosta. Tässä esimerkissä käytämme Perl-pikakuvaketta asettaaksesi jokaisen alkion paikallista aika-taulukkoa automaattisesti omaan muuttujaan. Olemme valinneet nimet niin, että on helppo muistaa mikä elementti on mikä.

 ($ sekunti, $ minuutti, $ tunti, $ dayOfMonth, $ kuukausi, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = paikallisaika ();


Meidän on myös mukautettava vuoden arvo. Muista, että paikallinen aika palauttaa vuosien määrän vuodesta 1900, joten nykyisen vuoden löytämiseksi meidän on lisättävä 1900 annettuun arvoon.

 $ vuosi = 1900 + $ yearOffset;

Kuinka kertoa nykyinen GM-aika Perlissa

Oletetaan, että haluat välttää kaikki mahdolliset aikavyöhykkeiden sekaannukset ja ottaa itse siirtymän hallintaan. Kellonajan hakeminen paikallisaikaan tuottaa aina arvon, joka perustuu koneen aikavyöhykeasetuksiin - palvelin sisään Yhdysvallat palaa kerran, kun taas Australiassa oleva palvelin palauttaa yhden melkein koko päivän aikavyöhykkeestä johtuen eroja.

Perlillä on toinen kätevä aikakertomus-toiminto, joka toimii täsmälleen samalla tavalla kuin paikallisaika, mutta sen sijaan, että palautetaan koneesi kiinteä aika aikavyöhyke, se palaa Koordinoitu maailmanaika (lyhennettynä UTC, kutsutaan myös Greenwich Mean Time tai GMT). Yksinkertaisesti tarpeeksi funktiota kutsutaan gmtime.

 #! / Usr / local / bin / perl

 @timeData = gmtime (aika);

 tulosta liittyä ('', @timeData); 

Paitsi se, että palautettu aika on sama kaikissa koneissa ja GMT: ssä, gmtime- ja localtime-toimintojen välillä ei ole eroa. Kaikki tiedot ja muuntamiset tehdään samalla tavalla.

 #! / Usr / local / bin / perl

 @months = qw (tammi helmikuu maaliskuuta huhtikuuta touko kesäkuuta heinäkuuta elokuuta syyskuuta lokakuuta marraskuun joulukuuta);

 @weekDays = qw (su ma ti ke to to pe la su su);

 ($ sekunti, $ minuutti, $ tunti, $ dayOfMonth, $ kuukausi, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = gmtime ();

 $ vuosi = 1900 + $ yearOffset;

 $ theGMTime = "$ tunti: $ minuutti: $ toinen, $ weekDays [$ dayOfWeek] $ kuukautta [$ kuukausi] $ dayOfMonth, $ vuosi";

 tulosta $ theGMTime; 

  1. localtime palauttaa nykyisen paikallisen ajan koneessa, joka suorittaa komentosarjan.
  2. gmtime palauttaa yleisen Greenwichin ajan, eli GMT (tai UTC).
  3. Palautusarvot eivät välttämättä ole aivan odotettuja, joten muista muuntaa ne tarvittaessa.
instagram story viewer