Неопределенная подпрограмма и main::ошибка timelocal

#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 ;