Каков рекомендуемый способ делать арифметику дат в Perl? - PullRequest
8 голосов
/ 17 октября 2010

Каков рекомендуемый способ выполнения арифметики дат в Perl?

Скажем, например, что я хочу знать дату три дня назад с сегодняшнего дня (где today = 2010-10-17 и today - 3 days = 2010-10-13). Как бы вы сделали это в Perl?

Ответы [ 4 ]

11 голосов
/ 17 октября 2010

Вы можете использовать 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);
6 голосов
/ 17 октября 2010
5 голосов
/ 17 октября 2010

Существует множество различных модулей манипуляции с датой и временем.

К ним относятся:

Все это хорошо продумано.Есть много других в дополнение.Многое зависит от того, какую арифметику вы хотите сделать.DateTime, пожалуй, самый строгий, но Date :: Calc и Date :: Manip могут быть проще в работе для нужной вам работы.

0 голосов
/ 17 октября 2010

Это модуль с наибольшей функциональностью, с которым я когда-либо сталкивался: Дата :: Manip

...