如何使用Perl以ISO格式获取当前日期?

时间:2010-10-06 17:40:08

标签: perl date

使用Perl以ISO格式(例如“2010-10-06”)获取当前日期的最有效方法是什么?

5 个答案:

答案 0 :(得分:29)

对您或计算机最有效吗?

对你:

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

答案 1 :(得分:14)

或者您现在可以使用DateTime模块,它似乎是事实上的标准日期处理模块。需要从CPAN安装它。

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

答案 2 :(得分:10)

Date::命名空间中有很多模块,其中许多模块可以帮助您完成所需的操作。或者,您可以自己动手:

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

<强>资源

答案 3 :(得分:6)

您可以使用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

答案 4 :(得分:5)

这不会创建任何临时变量:

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