如何使用DateTime转换返回值:
This is my date:2011-11-26T20:11:06
来This is my date:20111126
使用现有代码:
use DateTime qw();
my $dt3 = DateTime->now->subtract(days => 1);
print "This is my date:$dt3n"
ymd
最简单:
print "This is my date: ", $dt3->ymd(''), "n";
strftime
更通用:
print "This is my date: ", $dt3->strftime('%Y%m%d'), "n";
也有特定的(例如DateTime::Format::Atom)和通用的(例如DateTime::Format::Strptime)格式化辅助工具,您可以使用:
use DateTime::Format::Strptime qw( );
my $format = DateTime::Format::Strptime->new( pattern => '%Y%m%d' );
print "This is my date: ", $format->format_datetime($dt3), "n";
PS本;您的代码将给出在英国或附近的日期,而不是您所在的日期。对于它,您需要
my $dt3 = DateTime->now(time_zone => 'local');
或者更合适的
my $dt3 = DateTime->today(time_zone => 'local');
只需在第二行添加->ymd("")
。参数""
是分隔符,您选择它为空字符串。
use DateTime qw();
my $dt3 = DateTime->now->subtract(days => 1)->ymd("");
print "This is my date:$dt3n"
在Perl中大约有十几种处理日期的方法。但是,如果您知道日期字符串的格式,则可能没有理由调用datetime模块:
$dt3 =~ /^(d+)-(d+)-(d+)/;
print "This is my date:${1}${2}${3}n";
我不熟悉DateTime,但如果在显示数据时没有一种格式化数据的方法,我会感到惊讶。
我个人更喜欢Time::Piece和Time::Seconds做这些事情。自5.10以来,这些模块已成为标准Perl安装的一部分。另外,我发现界面相当简单和干净。
use Time::Piece;
use Time::Seconds;
my $time = localtime;
$time -= ONE_DAY;
print "This is my date:" . $time->ymd("");
由于某种原因,您不能在同一行中说$time = localtime - ONE_DAY;
。我猜你需要先创建Time::Piece
对象,然后才能用Time::Second
常量操作它们。