Forum Webscript.Ru

Программирование => Perl => Тема начата: mstf от 24 Декабря 2003, 20:47:18

Название: работа с датой в perle, помогите
Отправлено: mstf от 24 Декабря 2003, 20:47:18
Помогите сделать такое
В пхп есть такая вещь как автоматическое вычисление даты к примеру в коде ниже (на пхп)
        $ns = "2003-12-23 23:32:45";
        $dp = explode (" ",$ns);
        $dpd = explode ("-",$dp[0]);
        $dpt = explode (":",$dp[1]);
        $expd = date("Y-m-d H:i:s", mktime ($dpt[0],$dpt[1],$dpt[2],$dpd[1],$dpd[2]+30,$dpd[0]) );

Так вот в команде mktime в последней строке мы элементу массива $dpd[2] (которому соответствует 23) прибавляем 30, и команда видя, что итоговое число 53, сама увеличивает месяц на 1, ставит день 23, но и месяц больше положенных 12, поэтому и год увеличивается а месяц ставиться 1, то есть при простом прибавлении или вычитании мы не заботимся о правильности даты команада сама все делает. Есть ли такое в перле. Чтото ничего не нашел. Согласен, что все можно вычислить вручную, но если есть такая функция, то оно надежней будет.
 Помогите кто может
Название: работа с датой в perle, помогите
Отправлено: FANTAzeRus от 24 Декабря 2003, 23:23:32
Если выполняешь вычисления только с целыми днями, то юзай Add_Delta_Days:

use Date::Calc qw(Add_Delta_Days);
($y2,$m2,$d2) = Add_Delta_Days($y,$m,$d,$offset);

Причем $offset может представлять собой как положительное кол-во дней, так и отрицательное!

Если с минутами и секундами то:

use Date::Calc qw(Add_Delta_DHMS);
($year2,$month2,$day2,$h2,$m2,$s2)=Add_Delta_DHMS($year,$month,$day,$hour,$minute,$seconds,$day_offset,$hour_offset,$minute_offset,$seconds_offset);

модуль поставь дополнительно, он не входит в стандартную поставку:
ppm install Date::Calc

И будеттебе Щастье! :-)
Название: работа с датой в perle, помогите
Отправлено: mstf от 25 Декабря 2003, 01:28:37
Спасибо
И еще вопрос, а если какой нибудь другой способ, ну чтобы чтото похожее, но только не ставить дополнительные модуля, а то боюсь на сервере не позволят этого делать
Название: работа с датой в perle, помогите
Отправлено: FANTAzeRus от 25 Декабря 2003, 01:29:32
Думаю что только ручками ...
Название: работа с датой в perle, помогите
Отправлено: Меняздесьдавнонет от 25 Декабря 2003, 02:54:02
в пхп так никто никогда не делает.
Все вычисления с датой делаются в самой базе.

впрочем, для того, чтобы прибавить к таймстампу некое количество дней, не нужно никаких модулей, а только понимание этой простой вещи и чуть-чуть арифметики.
Название: работа с датой в perle, помогите
Отправлено: mstf от 25 Декабря 2003, 06:34:13
RomikChef
я не говорил, что я с БД работаю, а насчет таймстампа - это конечно тоже воспринималось как вариант, просто хотелось узнать еще варианты

Всем спасибо