我需要阅读2个日期并进行比较。
一个日期是current_date(年,月,日) 另一个是由业务逻辑决定的。 然后我需要比较两个日期,看看是否有一个在另一个之前。
我怎样才能在Perl中做同样的事情?
我正在寻找好的文档,但我在Perl中找到了很多Date模块。不知道哪一个适合它。
答案 0 :(得分:31)
如果日期为ISO-8601(即YYYY-MM-DD)并且您不需要验证它们,则可以按字典顺序进行比较(即lt
和gt
运算符。)
如果您需要验证日期,操纵日期或解析非标准格式 - 请使用CPAN模块。恕我直言,最好的是DateTime和DateCalc。 Date-Simple也很不错。
开始自己旅程的好地方是阅读The Many Dates of Perl和DateTime site。
答案 1 :(得分:21)
最受欢迎的日期模块之一是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);
答案 2 :(得分:2)
Date::Manip是一个非常好的模块。