Определение текущей даты

Проблема

Требуется определить год, месяц и число для текущей даты.

Решение

Воспользуйтесь функцией localtime. Без аргументов она возвращает текущую дату и время. Вы можете вызвать localtime и извлечь необходимую информацию из полученного списка:
($DAY, $MONTH, $YEAR) = (localtime) [3,4,5];
Модуль Time::localtime переопределяет localtime так, чтобы функция возвращала объект Time::tm:
use Time::localtime;
$tm = localtime;
($DAY, $MONTH, $YEAR) = ($tm->mday, $tm->mon, $tm->year);

Комментарий

Вывод текущей даты в формате ГГГГ-ММ-ДД с использованием стандартной функции localtime выполняется следующим образом:
($day, $month, $year) = (localtime)[3, 4, 5];
printf("The current date is %04d %02d %02d\n", $year+1900, $month+1, $day);
The  current  date  is  1999  04  28
Нужные поля из списка, возвращаемого localtime, извлекаются с помощью среза. Запись могла выглядеть иначе:
($day, $mooth, $year) = (localtime)[3..5]:
А вот как текущая дата выводится в формате ГГГГ-ММ-ДД (рекомендованном стандартом ISO 8601) с использованием Time::localtime:
use Time::localtime;
$tm = localtime;
printf("The current date is %04d-%02d-%02d\n", 
       $tm->year+1900,($tm->mon)+1, $tm->mday);
The current date is 1999-04-28
В короткой программе объектный интерфейс выглядит неуместно. Однако при большом объеме вычислений с отдельными компонентами даты обращения по имени заметно упрощают чтение программы. То же самое можно сделать и хитроумным способом, не требующим создания временных переменных:
printf("The current date is %04d-%02d-%02\n", 
       sub { ($_[5]+1900, $_[4]+1, $_[3]) }->(localtime));
Кроме того, в модуле POSIX имеется функция strftime:
use POSIX qw(strftime);
print strftime "%Y-%m-%d\n", localtime;
Функция gmtime работает аналогично localtime, но возвращает время по Гринвичу, а не для местного часового пояса.

См. также

Описание функций localtime и gmtime



2013-09-10 17:05:19

Proverte kod v komentariyah gde pro list tam oshibki detskie




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: