如何轉換使用的DateTime從我的回報:perl的 - 格式化的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:$dt3\n"
如何轉換使用的DateTime從我的回報:perl的 - 格式化的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:$dt3\n"
只是在第二行添加->ymd("")
。參數""
是您選擇爲空字符串的分隔符。
use DateTime qw();
my $dt3 = DateTime->now->subtract(days => 1)->ymd("");
print "This is my date:$dt3\n"
大約有十幾種在Perl中處理日期的方法。但是,如果你知道的日期字符串的格式,也可能沒有理由罵日期時間模塊:
$dt3 =~ /^(\d+)-(\d+)-(\d+)/;
print "This is my date:${1}${2}${3}\n";
我不熟悉的日期時間,但我會感到驚訝,如果沒有辦法在顯示數據時格式化數據。
我個人比較喜歡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
常量操作它們。
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');