使用Perl获取当前日期的最有效方法是什么, 并以ISO格式(例如"2010-10-06")表示呢?
最高效的是你还是电脑?
对于你:
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];
或者您可以使用DateTime模块,它似乎是当今事实上的标准日期处理模块。需要从CPAN安装。
use DateTime;
my $now = DateTime->now->ymd;
DateTime->now->iso8601
。 - Flimm在 Date::
命名空间中有很多模块,其中许多可以帮助你实现所需的功能。或者,你也可以自己编写一个:
my ($day, $mon, $year) = (localtime)[3..5];
printf "%04d-%02d-%02d\n", 1900+$year, 1+$mon, $day;
资源
use strict;
use warnings;
use Time::Piece;
my $today = localtime->ymd(); # Local time zone
my $todayUtc = gmtime->ymd(); # UTC
这不会创建任何临时变量:
printf "%d-%02d-%02d", map { $$_[5]+1900, $$_[4]+1, $$_[3] } [localtime];