PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 100


Модуль Timc::localtime переопределяет localtime так, чтобы функция возвращала объект Time::tm:

use Time    localtime

$tm = localtime,

($DAY,   SMONTH,   $YEAR)  =  ($tm->mday,   $tm->mon,   $tm->year),

Комментарий

Вывод текущей даты в формате ГГГГ-ММ-ДД с использованием стандартной функ­ции localtime выполняется следующим образом:

($day,   Smonth,   $year)  =  (localtime)[3,4 5],

printf( The current date is %04d %02d %02\n      $year+1900,   $month+1,   $day),

The  current  date   is   1999  04  28

Нужные ноля из списка, возвращаемою localtime, извлекаются с помощью среза. Запись могла выглядеть иначе:

($day,   Smonth,   $year)  =  (localtime)[3    5],

А вот как текущая дата выводится в формате ГГГГ-ММ-ДД (рекомендованном стандартом ISO 8601) с использованием Time::localtime:

use Time localtime

$tm = localtime,

printf( The current date is %04d-%02d-%02\n , $tm->year+1900,

($tm->mon)+1, $tm->mday) The current date is 1999-04-28

В короткой программе обьектный интерфейс выглядит ]1еуместпо. Однако при большом объеме вычислений с отдельными компонентами даты обращения по имени заметно упрощают чтение программы.

То же самое можно сделать и хитроумным способом, не требующим создания временных переменных:

printf( The current date is %04d-%02d-%02\n ,

sub {($_[5]+1900, $_[4]+1 $_[3])}->(localtime)),

Кроме того, в модуле POSIX имеется функция strftime, упоминаемая в ре­цепте 3.8:

use POSIX qw(strftime),

print strftime    %Y-%m-%d\n  ,   localtime,

Функция gmtime работает аналогично localtime, но возвращает время по Грин­вичу, а не для местного часового пояса.

> Смотри также---------------------------------------------------------------------------------------------

Описание функций localtime и gmtime вperlfunc(l); документация по стандарт­ному модулю Time::locallime.


98   Глава 3 • Дата и время

3.2. Преобразование полного времени в секунды с начала эпохи

Проблема

Требуется преобразовать дату/время, выраженные отдельными значениями дня, ме­сяца, юда и т. д. в количество секунд с начала эпохи.




- Начало -  - Назад -  - Вперед -