比较Perl中日期的最佳方法是什么?

时间:2010-11-16 22:05:30

标签: perl

我需要阅读2个日期并进行比较。

一个日期是current_date(年,月,日) 另一个是由业务逻辑决定的。 然后我需要比较两个日期,看看是否有一个在另一个之前。

我怎样才能在Perl中做同样的事情?

我正在寻找好的文档,但我在Perl中找到了很多Date模块。不知道哪一个适合它。

3 个答案:

答案 0 :(得分:31)

如果日期为ISO-8601(即YYYY-MM-DD)并且您不需要验证它们,则可以按字典顺序进行比较(即ltgt运算符。)

如果您需要验证日期,操纵日期或解析非标准格式 - 请使用CPAN模块。恕我直言,最好的是DateTimeDateCalcDate-Simple也很不错。

开始自己旅程的好地方是阅读The Many Dates of PerlDateTime site

答案 1 :(得分:21)

最受欢迎的日期模块之一是DateTime,它将处理所有角落案例和日期数学周围的其他问题。

此链接是DateTime的常见问题解答,可帮助您入门:

DateTime模块的工作方式是将日期(可能是字符串)转换为DateTime个对象,然后可以使用多种DateTime方法之一进行比较。

在下面的示例中,$dt1$dt2DateTime个对象。

$days是两个日期之间的差异:

my $days = $dt1->delta_days($dt2)->delta_days;

$cmp为-1,0或1,具体取决于$dt1是否小于,等于或大于$dt2

my $cmp = DateTime->compare($dt1, $dt2);

答案 2 :(得分:2)

Date::Manip是一个非常好的模块。