URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2152
[ Назад ]

Исходное сообщение
"вычитание даты"

Отправлено gexa , 04-Окт-03 13:17 
Ребята подскажите в таком вопросе:
Есть в скрипте (perl) переменная:
$d = `date +%Y"-"%m"-"%d`; (это сегодняшняя дата)
# вида 2003-10-04
нужно в переменной $yesterday получить 2003-10-03
а например в переменной $four_day_ago 2003-09-30
То есть вопрос по сути как в таких случаях действовать
со вычитанием/прибавлением дат?
Подскажите пожалуйса.


  


Содержание

Сообщения в этом обсуждении
"вычитание даты"
Отправлено ovax , 09-Окт-03 03:51 
Пользуйся функцией time и localtime.

$today = time;  # (текущее время в секундах)
$fourdaysago=$today - 86400*4 ; #86400 секунд в сутках * 4

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($fourdaysago);

Вот, собственно и всё.


"вычитание даты"
Отправлено gara , 10-Окт-03 22:17 
еще глянь в сторону
use Date::Pcalc qw(:all);

"вычитание даты"
Отправлено Lorky , 16-Окт-03 15:34 
Добрый ДеньВечерНочер

По простому:
Переводишь свое время (2003-10-04) в секунды при помощи timelocal
затем вычитаешь от полученного чила нужное количество к примеру сутки 60*60*24
результат вычитания переводишь обратно в дату.

Вот небольшой пример подобного вычисления

#=============================================================
# вычисляет диапазон в сек между двумя датами/временем
sub TimeRange{
use Time::Local;

my (@par)=@_;
local $st,$et;
## localtime(sec,min,hour,day,mon,year)
$st=timelocal(@par[2],@par[1],@par[0],@par[3],(@par[4]-1),(@par[5]-1900));
$et=timelocal(@par[8],@par[7],@par[6],@par[9],(@par[10]-1),(@par[11]-1900));

return  int(($et-$st)/60);      #возвращаем колво минут
}
#=============================================================



"вычитание даты"
Отправлено denn , 16-Окт-03 16:16 
>Ребята подскажите в таком вопросе:
>Есть в скрипте (perl) переменная:
>$d = `date +%Y"-"%m"-"%d`; (это сегодняшняя дата)
># вида 2003-10-04
>нужно в переменной $yesterday получить 2003-10-03
>а например в переменной $four_day_ago 2003-09-30
>То есть вопрос по сути как в таких случаях действовать
>со вычитанием/прибавлением дат?
>Подскажите пожалуйса.
>
man date на предмет -v +|-