Localtime: kuidas praegust kellaaega Perlis öelda?

click fraud protection

Perl on käepärane sisseehitatud funktsioon skriptidest praeguse kuupäeva ja kellaaja leidmiseks. Kui me räägime aja leidmisest, siis räägime ajast, mis on praegu seatud skripti töötavale masinale. Näiteks kui käitate Perli skripti oma kohalikus arvutis, tagastab kohalik aeg teie praeguse aja, mille olete eeldatavalt praegusele ajavööndile seadnud.

Kui käivitate sama skripti veebiserveris, võite leida, et kohalik tööaeg on töölaua süsteemis kohaliku aja järgi väljas. Võimalik, et server asub teises ajavööndis või on valesti seadistatud. Igal masinal võib olla lokaalse aja kohta täiesti erinev ettekujutus ja selleks, et see vastaks teie ootustele, võib skripti piires või serveris endas vaja minna mõnda kohandamist.

Kohaliku aja funktsioon tagastab loendi, mis sisaldab andmeid praeguse aja kohta, osa neist tuleb kohandada. Käivitage allolev programm ja näete loendis kõiki elemente, mis on trükitud reale ja eraldatud tühikutega.

#! / usr / kohalik / bin / perl
@timeData = kohalik aeg (aeg);
print join ('', @timeData);
instagram viewer

Te peaksite nägema midagi sarnast, kuigi arv võib olla väga erinev.

20 36 8 27 11 105 2 360 0

Need praeguse aja elemendid on järjekorras:

  • Sekundid minutist möödas
  • Minutid tunnist möödas
  • Tundi kesköö paiku
  • Kuu päev
  • Kuud möödunud aasta algusest
  • Aastate arv alates 1900. aastast
  • Päevade arv nädala algusest (pühapäev)
  • Päevade arv aasta algusest
  • Kas või mitte suveaja kokkuhoid on aktiivne

Nii et kui naaseme näite juurde ja proovime seda lugeda, näete, et 27. detsembril 2005 on kell 8:36:20, see on 2 päeva pühapäevast (teisipäev) ja on 360 päeva pärast selle algust aastal. Suveaeg pole aktiivne.

Perli kohaliku aja muutmine loetavaks

Mõnda massiivi elementi, mida kohalik aeg tagastab, on natuke ebamugav lugeda. Kes arvaks käimasolevast aastast 1900 möödunud aastate arvu osas? Vaatame näidet, mis muudab meie kuupäeva ja kellaaja selgemaks.

 #! / usr / kohalik / bin / perl

 @months = qw (Jan Veebr Märts Apr Mai Juuni Juuli Aug Sept Okt Nov Dets);

 @weekDays = qw (Pühapäev esmaspäev teisipäev kolmapäev pühapäev pühapäev pühapäev);

 ($ teine, $ minut, $ tund, $ dayOfMonth, $ kuu, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = kohalik aeg ();

 $ aasta = 1900 + $ yearOffset;

 $ theTime = "$ tund: $ minut: $ teine, $ weekDays [$ dayOfWeek] $ kuud [$ kuu] $ dayOfMonth, $ aasta";

 prindi $ theTime; 

Programmi käivitades peaksite nägema palju loetavamat kuupäeva ja kellaaega:

 9:14:42, ke 28. detsember 2005 

Mida me siis selle loetavama versiooni loomiseks tegime? Esiteks valmistame ette kaks massiivi, millel on kuude ja nädalapäevade nimed.

 @months = qw (Jan Veebr Märts Apr Mai Juuni Juuli Aug Sept Okt Nov Dets);

 @weekDays = qw (Pühapäev esmaspäev teisipäev kolmapäev pühapäev pühapäev pühapäev); 

Kuna kohaliku aja funktsioon tagastab need elemendid väärtustes vahemikus vastavalt 0–11 ja 0–6, on need sobivad massiivi jaoks. Kohaliku aja järgi tagastatud väärtust saab kasutada numbrilise aadressina, et pääseda massiivi õigele elemendile.

 $ kuud [$ kuu] $ nädalPäevad [$ dayOfWeek]


Järgmine samm on kõigi väärtuste hankimine funktsioonilt localime. Selles näites kasutame Perli otseteed, et paigutada iga lokaalaja massiivi element automaatselt oma muutujasse. Oleme valinud nimed nii, et oleks lihtne meelde jätta, milline element on milline.

 ($ teine, $ minut, $ tund, $ dayOfMonth, $ kuu, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = kohalik aeg ();


Samuti peame kohandama aasta väärtust. Pidage meeles, et kohalik aeg tagastab aastate arvu alates 1900. aastast, nii et jooksva aasta leidmiseks peame lisama meile antud väärtusele 1900.

 $ aasta = 1900 + $ yearOffset;

Kuidas öelda praegust GM-i aega Perlis

Ütleme nii, et soovite vältida võimalikke ajavööndite segadusi ja võtta kontroll nihke üle ise. Kellaaja järgi kellaaja saamine tagastab alati väärtuse, mis põhineb masina ajatsooni sätetel - server sisse USA naaseb ühe korra, Austraalia server aga ühe peaaegu terve päeva, mis on erinev ajavööndi tõttu erinevused.

Perlil on teine ​​käepärane aja määramise funktsioon, mis töötab täpselt samamoodi nagu kohalik aeg, kuid selle asemel, et tagastada teie masina jaoks fikseeritud aeg ajavöönd, see naaseb Koordineeritud universaalaeg (lühendatult UTC, nimetatakse ka Greenwichi ajaks ehk GMT). Lihtsalt piisavalt funktsiooni kutsutakse gmtime.

 #! / usr / kohalik / bin / perl

 @timeData = gmtime (aeg);

 print join ('', @timeData); 

Peale selle, et tagastatud aeg on igas masinas sama ja GMT-s, pole gmtime ja localime funktsioonide vahel vahet. Kõik andmed ja teisendused toimuvad samal viisil.

 #! / usr / kohalik / bin / perl

 @months = qw (Jan Veebr Märts Apr Mai Juuni Juuli Aug Sept Okt Nov Dets);

 @weekDays = qw (Pühapäev esmaspäev teisipäev kolmapäev pühapäev pühapäev pühapäev);

 ($ teine, $ minut, $ tund, $ dayOfMonth, $ kuu, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = gmtime ();

 $ aasta = 1900 + $ yearOffset;

 $ theGMTime = "$ tund: $ minut: $ sekund, $ weekDays [$ dayOfWeek] $ kuud [$ kuu] $ dayOfMonth, $ aasta";

 prindi $ theGMTime; 

  1. localtime tagastab skripti käitavas masinas praeguse kohaliku aja.
  2. gmtime naaseb universaalse Greenwichi aja ehk GMT (või UTC).
  3. Tagastatav väärtus ei pruugi olla päris see, mida ootate, seega veenduge, et konverteeriksite selle vajadusel ümber.
instagram story viewer