我想要一种简单的方法来获取昨天的日期(本地时间)作为Perl脚本中的字符串。最好,我希望在没有模块依赖的情况下这样做,因为我们只安装了一个基本的Perl5.12。
所以,就像这样:
my $yesterdays_date=...; # Puts for example '301011' into $yesterdays_date,
# if today is October 31st, 2011发布于 2011-11-01 02:57:51
Time::Piece是核心:
use Time::Piece;
use Time::Seconds qw(ONE_DAY);
my $yesterday = localtime() - ONE_DAY();
print $yesterday->strftime('%d%m%y'), "\n";如果您关心夏令时,您可以将当前时间标准化为接近中午:
use Time::Piece;
use Time::Seconds qw(ONE_DAY ONE_HOUR);
my $today = localtime;
my $yesterday = $today + ONE_HOUR * ( 12 - $today->hour ) - ONE_DAY;
print $yesterday->strftime("%d%m%y"), "\n";如果您可以忍受依赖,那么可以使用DateTime
use DateTime;
print DateTime->now->subtract(days => 1)->strftime('%d%m%y'), "\n";发布于 2011-11-01 03:48:15
如果您愿意使用依赖项,DateTime通常会做您需要的任何事情。
use strict;
use warnings;
use 5.012;
use DateTime;
say DateTime->now->subtract(days => 1)->strftime('%d%m%y');发布于 2011-11-01 03:01:00
只需从当前时间减去24小时(24小时* 60分钟* 60秒)即可得到localtime:
say scalar localtime(time - 60*60*24);
# Sun Oct 30 21:04:30 2011请注意,localtime仅在标量上下文中以字符串格式返回时间。如果你需要生成'DDMMYY‘,你可以使用list context返回的数据结构:
my @tm = localtime(time - 60*60*24);
my $date = sprintf("%02d%02d%2d", $tm[3], $tm[4]+1, $tm[5] + 1900);
# 30102011https://stackoverflow.com/questions/7958231
复制相似问题