Добрый ДеньВечерНочер
По простому:
Переводишь свое время (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); #возвращаем колво минут
}
#=============================================================