December 2010 Archives

Функция преобразует время, возвращаемое 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.

Statistic

About this Archive

This page is an archive of entries from December 2010 listed from newest to oldest.

October 2010 is the previous archive.

January 2011 is the next archive.

Find recent content on the main index or look in the archives to find all content.