我需要阅读2个日期并进行比较。在Perl中比较日期的最佳方式是什么?
一个日期是current_date(年,月,日) 另一个是由业务逻辑决定的。 然后我需要比较两个日期,看看是否一个在另一个之前。
我该怎么在Perl中做同样的事情?
我在寻找好的文档,但是我在Perl中找到了很多日期模块。不知道哪一个适合它。
我需要阅读2个日期并进行比较。在Perl中比较日期的最佳方式是什么?
一个日期是current_date(年,月,日) 另一个是由业务逻辑决定的。 然后我需要比较两个日期,看看是否一个在另一个之前。
我该怎么在Perl中做同样的事情?
我在寻找好的文档,但是我在Perl中找到了很多日期模块。不知道哪一个适合它。
最受欢迎的日期模块之一是DateTime,它将处理所有的角落案例和其他周围的日期数学问题。
此链接是DateTime的一个常见问题可以帮助你开始:
的DateTime
模块的工作方式是,您将您的时间(这将可能是字符串)转换为DateTime
对象,然后您可以使用几种DateTime
方法之一进行比较。
在下面的示例中,$dt1
和$dt2
是DateTime
对象。
$days
是两个日期之间的增量:
my $days = $dt1->delta_days($dt2)->delta_days;
$cmp
是-1,0或1,这取决于$dt1
是否小于,等于或大于$dt2
更多。
my $cmp = DateTime->compare($dt1, $dt2);
关于DateTime的许多好事之一是它有完全的操作符重载 - 例如您可以将两个DateTime对象比作'if($ dt1 <$ dt2){...}' – Ether 2010-11-16 22:14:03
Date::Manip是一个很好的模块。
如果日期ISO-8601(即YYYY-MM-DD),你不需要验证它们,你可以按字典比较(即lt
和gt
运营商。)
如果您需要验证日期,操作日期或解析非标准格式 - 使用CPAN模块。最好的,恕我直言,是DateTime和DateCalc。 Date-Simple也不错。
开始您自己的旅程的好地方是阅读The Many Dates of Perl和DateTime site。
您可能对[栈交换建议](http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2“代码审查”)感兴趣。它几乎准备好开始测试,只需要更多。 – greatwolf 2011-01-19 04:55:30