Каков рекомендуемый способ выполнения арифметики дат в Perl?
Скажем, например, что я хочу знать дату три дня назад с сегодняшнего дня (где today = 2010-10-17 и today - 3 days = 2010-10-13). Как бы вы сделали это в Perl?
today
2010-10-17
today - 3 days
2010-10-13
Вы можете использовать DateTime и DateTime :: Duration
http://search.cpan.org/dist/DateTime/lib/DateTime/Duration.pm
или работать с метками времени Unix:
my $now = time(); my $threeDaysAgo = $now - 3 * 86400; my ($day, $mon, $year) = (localtime($threeDaysAgo))[3, 4, 5]; printf("Three days ago was %04d-%02d-%02d", $year+1900, $mon+1, $day);
См. DateTime на CPAN (или здесь ).
Существует множество различных модулей манипуляции с датой и временем.
К ним относятся:
Все это хорошо продумано.Есть много других в дополнение.Многое зависит от того, какую арифметику вы хотите сделать.DateTime, пожалуй, самый строгий, но Date :: Calc и Date :: Manip могут быть проще в работе для нужной вам работы.
Это модуль с наибольшей функциональностью, с которым я когда-либо сталкивался: Дата :: Manip