2010-11-16 86 views
11

我需要阅读2个日期并进行比较。在Perl中比较日期的最佳方式是什么?

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

我该怎么在Perl中做同样的事情?

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

+0

您可能对[栈交换建议](http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2“代码审查”)感兴趣。它几乎准备好开始测试,只需要更多。 – greatwolf 2011-01-19 04:55:30

回答

18

最受欢迎的日期模块之一是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); 
+11

关于DateTime的许多好事之一是它有完全的操作符重载 - 例如您可以将两个DateTime对象比作'if($ dt1 <$ dt2){...}' – Ether 2010-11-16 22:14:03

27

如果日期ISO-8601(即YYYY-MM-DD),你不需要验证它们,你可以按字典比较(即ltgt运营商。)

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

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

相关问题