要求 - 我的文件名为“Rajesh.1202242219”。数字只不过是日期“date '+%y''%m''%d''%H''%M'
”格式。
现在我正在尝试编写一个 perl 脚本来从文件名中提取数字并与当前系统日期和时间进行比较,并根据此比较的输出,使用 perl 打印一些值。
方法:
从文件名中提取数字:
if ($file =~ /Rajesh.(\d+).*/) {
print $1;
}
将这个时间转换成perl中可读的时间
my $sec = 0; # Not Feeded
my $min = 19;
my $hour = 22;
my $day = 24;
my $mon = 02 - 1;
my $year = 2012 - 1900;
my $wday = 0; # Not Feeded
my $yday = 0; # Not Feeded
my $unixtime = mktime ($sec, $min, $hour, $day, $mon, $year, $wday, $yday);
print "$unixtime\n";
my $readable_time = localtime($unixtime);
print "$readable_time\n";
查找当前时间并比较...
my $CurrentTime = time();
my $Todaydate = localtime($startTime);
但这里的问题是,我没有得到如何从 $1
中提取 2 位数字并分配给 $sec
、$min
的解决方案> 等。有什么帮助吗?
此外,如果您对这个问题陈述有好的方法,请与我分享
最佳答案
我喜欢使用时间对象来简化逻辑。我用 Time::Piece在这里是因为它简单且重量轻(并且是核心的一部分)。 DateTime 可以是另一种选择。
use Time::Piece;
my ( $datetime ) = $file =~ /(\d+)/;
my $t1 = Time::Piece->strptime( $datetime, '%y%m%d%H%M' );
my $t2 = localtime(); # equivalent to Time::Piece->new
# you can do date comparisons on the object
if ($t1 < $t2) {
# do something
print "[$t1] < [$t2]\n";
}
关于perl - 将旧的 Unix 日期转换为 Perl 并进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9465036/