Подтвердить что ты не робот

Как получить текущую дату в формате ISO с помощью Perl?

Какой самый эффективный способ получить текущую дату в формате ISO (например, "2010-10-06" ) с помощью Perl?

4b9b3361

Ответ 1

Наиболее эффективен для вас или компьютера?

Для вас:

use POSIX qw/strftime/;

print strftime("%Y-%m-%d", localtime), "\n";

Для компьютера:

my @t = localtime;
$t[5] += 1900;
$t[4]++;

printf "%04d-%02d-%02d", @t[5,4,3];

Ответ 2

Или вы можете использовать модуль DateTime, который в настоящий момент является стандартным модулем обработки даты де-факто. Необходимо установить его из CPAN.

use DateTime;
my $now = DateTime->now->ymd;

Ответ 3

В пространстве имен Date:: имеется много модулей, многие из которых могут помочь вам сделать то, что вам нужно. Или вы можете просто перевернуть свои собственные:

my ($day, $mon, $year) = (localtime)[3..5];
printf "%04d-%02d-%02d\n", 1900+$year, 1+$mon, $day;

Ресурсы

Ответ 4

Вы можете использовать модуль Time:: Piece (в комплекте с Perl 5.10 и выше, или вы можете скачать его из CPAN) следующим образом:

use strict;
use warnings;
use Time::Piece;

my $today = localtime->ymd();        # Local time zone
my $todayUtc = gmtime->ymd();        # UTC

Ответ 5

Это не создает временных переменных:

printf "%d-%02d-%02d", map { $$_[5]+1900, $$_[4]+1, $$_[3] } [localtime];