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

use*_*855 12 perl

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

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

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

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

daw*_*awg 35

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

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

一个开始自己旅程的好地方是阅读Perl的多日期DateTime网站.


Eri*_*rom 21

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

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

该方式DateTime模块的工作原理是,您将您的时间(这大概会是一个字符串)为DateTime对象,然后你就可以比较使用的几个中的一个DateTime方法.

在下面的实施例中,$dt1$dt2DateTime对象.

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

my $days = $dt1->delta_days($dt2)->delta_days;
Run Code Online (Sandbox Code Playgroud)

$cmp是-1,0或1,取决于$dt1是小于,等于还是大于$dt2.

my $cmp = DateTime->compare($dt1, $dt2);
Run Code Online (Sandbox Code Playgroud)

  • 关于DateTime的许多好处之一是它具有完整的运算符重载 - 例如,您可以将两个DateTime对象比较为`if($ dt1 <$ dt2){...} (15认同)