Forum Webscript.Ru
Программирование => Perl => Тема начата: DamonLSD от 16 Февраля 2002, 18:35:25
-
Здравствуйте!
Подскажите пожалуйста, с помощью чего можно реализовать следующее:
Нужно вывести даты в формате дд/мм/гггг с учетом запроса, например:
за текущую неделю: 11/02/2002 - 16/02/2002
за текущий месяц: 01/02/2002 - 16/02/2002
Заранее большое СПАСИБО!!!
:)
-
А какая структура хранения данных?
-
Данные хранятся в *.mdb , вытаскиваются через ODBC.
А даты хранятся в виде дд/мм/гггг (11/02/2002)
-
Для работы с ODBC есть модуль Win32::ODBC.
Формируешь запрос и получаешь данные:
if (!($db = new Win32::ODBC($DSN)))
{ print "Error connecting to Database\\n";
print "Error: ".Win32::ODBC::Error()."\\n";
exit;
}
$sql="select * from $Table";
$db->Sql($sql);
while($db->FetchRow())
{ %data=$db->DataHash();
foreach $bla (keys %data)
{ print "$bla -> $data{$bla}\\n";
}
}
А ф-циями localtime и sprintf можно форматировать результат.
-
Вопрос не про "Win32::ODBC", а про текущую неделю!!!
С текущим месяцем разобрался.
-
Ф-ции localtime, gmtime 6-ым параметром (считать начиная с нуля) возвращают текущий день недели.
0 - воскресенье,
1 - понедельник и т.д.
use Time::Local;
$wday=(localtime)[6];
if ($wday==0)
{ $wday=6;
}
else
{ $wday--;
}
$curtime=timelocal((localtime)[0,1,2,3,4,5]);
$startWeek=$curtime-$wday*24*60*60;
($stday,$stmonth,$styear)=
(localtime($startWeek))[3,4,5]; # первый день недели
$endWeek=$curtime+(6-$wday)*24*60*60;
($endday,$endmonth,$endyear)=
(localtime($endWeek))[3,4,5]; # последний день недели
Потом форматируешь результаты.
-
OK
Сейчас посматрю, что выходит :))