perlfunc / localtime - работа с датой и временем

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

This page contains a single entry by Dinar published on December 1, 2010 12:00 AM.

perlfunc / open - чтение и запись в файл was the previous entry in this blog.

perlfunc / map - обработка списков is the next entry in this blog.

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