Функция преобразует время, возвращаемое time
в список из девяти
элементов, представляющих время, приведенное к местному часовому
поясу. Обычно используется так:
# 0 1 2 3 4 5 6 7 8 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
Все элементы представляют собой числа и поступают прямо из struct tm
.
$sec
, $min
, и $hour
содержат соответственно секунды, минуты и
часы в указанном времени.
my @abbr = qw( Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь ); print "$abbr[$mon] $mday"; # при значениях $mon=9, $mday=18 на выводе "Октябрь 18"
$year
- количество лет после 1900 года, а не просто последние две цифры года.
Например, в 2023 году $year
будет содержать значение 123
.
Таким образом, получить 4-значный год можно следующим образом:
$year += 1900;
В противном случае, вы создаете Y2K-несовместимые программы, но вы не хотите делать этого, не так ли ?
Чтобы получить двухзначный год (например, '01' в 2001 году), используйте следующее:
$year = sprintf("%02d", $year % 100);
$wday
- день недели, при этом воскресенье имеет номер 0, а среда - номер 3.
$yday
является днем в году, содержит значения в диапазоне 0..364
(или 0..365
в високосные годы.)
Если указанное время попадает в период летнего времени, $isdst
содержит
истинное значение, иначе - ложное.
Если EXPR опущено, localtime()
использует текущее время (возвращаемое
системной функцией time(3)).
$now_string = localtime; # например, "Thu Oct 13 04:54:34 1994"
Это скалярное значение не зависимо от локали, формат встроен в Perl.
Для GMT вместо локального времени используется встроенная функция gmtime
.
См. также
модуль Time::Local (для преобразования секунд, минут, часов, ... обратно
в целочисленное значение, возвращаемое ф-ей time()), и функции strftime(3)
и mktime(3) модуля POSIX.
use POSIX qw(strftime); $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime; # или в формате GMT в соответствии с вашей локалью: $now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime;
Отметим, что %a
и %b
, краткие формы дня недели и месяца в году,
не обязательно должны быть длиной в три символа.
См. "localtime" in perlport в интересах портативности.
Модули Time::gmtime и Time::localtime обеспечивают удобный механизм доступа по имени к функциям gmtime() и localtime() соответственно.
Для решения всеобъемлющих задач представления даты и времени обратите внимание на модуль DateTime на CPAN.