寻找以DDMMYY格式生成昨天日期的Perl 5.12代码

Mic*_*eyn 4 perl

我想用一种简单的方法将昨天的日期(本地时间)作为Perl脚本中的字符串.最好,我想这样做没有模块依赖,因为我们有一个简单的Perl 5.12安装.

所以,像:

my $yesterdays_date=...; # Puts for example '301011' into $yesterdays_date, 
                         # if today is October 31st, 2011
Run Code Online (Sandbox Code Playgroud)

run*_*rig 13

Time::Piece 是核心:

use Time::Piece;
use Time::Seconds qw(ONE_DAY);

my $yesterday = localtime() - ONE_DAY();
print $yesterday->strftime('%d%m%y'), "\n";
Run Code Online (Sandbox Code Playgroud)

如果您担心夏令时,可以将当前时间标准化到中午附近:

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";
Run Code Online (Sandbox Code Playgroud)

如果你可以使用依赖项,那么使用DateTime:

use DateTime;

print DateTime->now->subtract(days => 1)->strftime('%d%m%y'), "\n";
Run Code Online (Sandbox Code Playgroud)


Oes*_*sor 13

如果您愿意使用依赖项,DateTime通常会执行您需要的任何操作.

use strict;
use warnings;
use 5.012;

use DateTime;

say DateTime->now->subtract(days => 1)->strftime('%d%m%y');
Run Code Online (Sandbox Code Playgroud)

  • +1是唯一一个不太可能遭受DST错误的答案. (8认同)
  • 我的意思是,我明白不想要依赖,但是在我开始使用DateTime来完成所有事情之后,我对'我怎么做$ x对日期和时间'的烦恼真的都消失了. (5认同)