我应该使用哪个CPAN模块来提前计算一些工作日

时间:2011-10-22 18:02:35

标签: perl date cpan

这是一个由两部分组成的问题:

我想在Perl中提前5个工作日计算(比方说)。适用于周末和假日。 Date::Manip这样做,但是非常重量级。是否有较轻的重量模块可以很好地做到这一点?

如果Date::Manip确实是正确的选择,你能否告诉我为什么不打印任何东西。 Date::Manip关于如何实际输出内容的文档很薄。

use Date::Manip;

my $date = new Date::Manip::Date;

my $err = $date->parse("today");
if ($err) {
     print "Problems: $err\n";
}
$date->printf("It is now %b %e, %Y.\n");

2 个答案:

答案 0 :(得分:2)

printf方法应该已命名为sprintf。它返回格式化的字符串;它不打印它。尝试:

print $date->printf("It is now %b %e, %Y.\n");

Date::Manip可能是处理工作日最简单的方法,因为它内置了这个概念。您也可以使用DateTime::Set操作执行此操作(请参阅DateTime::Event::Holiday::US了解预设充满了美国假期。)

还有DateTime::BusinessHours,但我从未尝试过。

答案 1 :(得分:1)

DateTime相比,

Date::Manip是轻量级的。另请查看Date::Business。它可以处理假期和工作日(addb)。