#perl #datetime
#perl #дата-время
Вопрос:
При выполнении моего модуля perl у меня возникает следующая ошибка :
Undefined subroutine amp;main::timelocal
Я определил время, и я хочу в формате DDMMYYYY
без каких-либо разделителей.
Кто-нибудь может мне помочь в этом?
Комментарии:
1. Вам нужно быть намного понятнее в описании ваших требований. И покажите некоторый код, демонстрирующий, что вы пробовали.
2. Вам было дано несколько хороших ответов .. пожалуйста, покажите уже некоторый код, чтобы было проще дать ответ, соответствующий вашей реальной проблеме.
Ответ №1:
Чтобы использовать timelocal подобным образом, вам необходимо импортировать его:
use Time::Local 'timelocal';
(и убедитесь, что вы вызываете ее правильно; см. Time::Local)
Но, возможно, вы имели в виду localtime? Или вам может понадобиться POSIX::strftime.
Комментарии:
1. я хочу реализовать только в localtime .. если я использую что-то вроде DD / MM / ГГГГ, это произойдет.. но мое требование — DDMMYYYYY.
Ответ №2:
Вы не очень точно указали, где брать время. Это работает для текущей даты, используя основной модуль Time::Piece:
use Time::Piece;
print localtime->dmy(''); # 05042011
Если у вас есть время в переменной, вы можете сделать
use Time::Piece;
print localtime($time)->dmy('');
Пустая строка в dmy
вызове является разделителем.
Комментарии:
1. и на этот раз ::piece не установлен в моей системе.
2. Какую версию Perl вы используете? Time::Piece находится в стандартной библиотеке Perl с 5.10.0.
Ответ №3:
Основной модуль POSIX содержит функцию ‘strftime’, которая обрабатывает все стандартные последовательности форматирования даты и времени Unix.
$ perl -MPOSIX=strftime -le'print strftime "%d%m%Y", localtime'
Или в программе,
use POSIX 'strftime';
print strftime '%d%m%Y', localtime, "n";
Ответ №4:
Это старая ошибка, но у меня была именно эта ошибка, и я решил ее, просмотрев приведенные выше примеры с другим решением.
Причина заключалась в том, что я не включил ‘;’ в конце инструкции use!
use Time::Local ;