如何使用Perl获取ISO格式的当前日期?
最有效的,你还是电脑?
对于你:
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];
命名空间Date::
中有很多模块,其中很多模块可以帮助您执行所需的任务。或者,你可以滚你自己:
my ($day, $mon, $year) = (localtime)[3..5];
printf "%04d-%02d-%02d\n", 1900+$year, 1+$mon, $day;
资源
- 日期::命名空间上的CPAN:http://search.cpan.org/search?query=Date%3A%3A&mode=module
别忘了'DateTime'! – CanSpice 2010-10-06 18:06:39
可以使用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
这不会创建任何临时变量:
printf "%d-%02d-%02d", map { $$_[5]+1900, $$_[4]+1, $$_[3] } [localtime];
呵呵,我以前从来没有考虑过使用地图。我不知道我是否喜欢它,但它确实很聪明。 – 2014-03-28 09:08:53
这种代码就是为什么我同时爱和恨Perl – 2017-05-20 21:31:37
你为什么要担心的效率?你的分析器是否告诉过你这段代码是一个热点? – Daenyth 2010-10-06 17:57:58