localtime EXPR
Konvertuoja laiką kaip kad gražinta time funkcijos į 8 elementų sąrašą su laiku, lokalizuotu standartinei Greenwich laiko zonai. Dažniausia naudojamas taip:
# 0 1 2 3 4 5 6 7
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) =
localtime(time);
Visi sąrašo elementai yra skaitiniai ir ateina tiesiai iš C `struct tm'.
$sec, $min, ir $hour yra nurodyto laiko sekundės, minutės ir valandos. $mday yra mėnesio diena, o $mon yra pats mėnesis, įvardijamas 0..11
diapazone, kur 0 yra sausis, o 11 - gruodis.
$year yra metai pradedant 1900. T.y. $year yra 123
2023 metais. $wday yra savaitės diena, kur 0 nurodo sekmadienį, o 3 - trečiadienį. $yday yra metų diena, 0..364
diapazone (arba 0..365
keliamuosiuose metuose.)
Įsidėmėkite, kad $year elementas nėra tiesiog paskutiniai du metų skaičiai. Jei taip manysite, darysite programas, su 2000 metų problema - o to tikrai nesinorėtų ar ne?
Teisingas būdas gauti pilnus 4 skaitmenų metus yra tiesiog:
$year += 1900;
O gauti paskutiniuosius du metų skaitmenis, (t.y. '01' 2001 metams) reikia:
$year = sprintf("%02d", $year % 100);
Jei EXPR praleistas, localtime()
naudoja dabartinį laiką (localtime(time)
).
Skaliariniame kontekste localtime()
gražina ctime(3) reikšmę:
$now_string = localtime; # t.y., "Thu Oct 13 04:54:34 1994"
Ši skaliarinė reikšmė nėra priklausoma nuo lokalizacijos, bet yra įdiegta Perl'e. Norint naudoti
GMT vietoj vietinio laiko naudokite gmtime. Žr. taip pat Time::Local
modulį
(paversti sekundes, minutes, valandas, ... atgal į sveikają reikšmę, gražintą time()), ir POSIX
modulio strftime(3) ir mktime(3) funkcijas.
Gauti ką nors panašaus į lokalizuotas datos eilutes, nustatykite lokalios aplinkos kintamuosius atitinkamai (žr. perllocale) ir išmėginkite pavyzdį:
use POSIX qw(strftime);
$now_string = strftime "%a %b %e %H:%M:%S %Y", localtime;
# or for GMT formatted appropriately for your locale:
$now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime;
Pažymėtina, kad %a
ir %b
, trumposios savaitės dienos ir metų mėnesio formos nebūtinai turi būti trijų simbolių.