比较perl中的时间而不使用模块

时间:2011-04-19 20:44:34

标签: perl time comparison

我正在尝试比较两个时间戳以查看哪一个是最新的,如果我可以使用DateTime模块这很容易,但遗憾的是我没有权限在服务器上安装任何模块,因此我受到限制仅限本机Perl命令。

时间的格式为“MM / DD / YYYY hh:mm:ss”。

4 个答案:

答案 0 :(得分:5)

如果您首先使用以下代码将时间转换为YYYY/MM/dd hh:mm:ss格式:

my ($date, $time) = split(/\s+/, $val);
my ($m, $d, $y) = split(/\//, $date);
$val = sprintf("%04d/%02d/%02d %s", $y, $m, $d, $time);

然后,您可以在日期上使用标准的词汇比较。

答案 1 :(得分:0)

您可以使用正则表达式将日期重新格式化为“YYYY / MM / DD hh:mm:ss”格式,以便您可以直接比较两个日期。

$date =~ s|^(\d{2})/(\d{2})/(\d{4})|$3/$1/$2|;

答案 2 :(得分:0)

字符串排序的唯一部分是YYYY部分,因此您可以单独比较该部分。

# MM/DD/YYYY hh:mm:ss
# 0123456789T12345678
@sorted_dates = sort { substr($a,6,4) cmp substr($b,6,4) || $a cmp $b } @dates;

答案 3 :(得分:0)

Perl包括Time :: Piece和Time :: Local模块。或者您可以使用PAR :: Packer创建可执行文件,其中包含DateTime并将其复制到服务器中。

当然,如果不需要任何其他功能,转换为“YYYY-MM-DD hh:mm:ss”格式是最简单的。