Forum Webscript.Ru

Программирование => Perl => Тема начата: DamonLSD от 16 Февраля 2002, 18:35:25

Название: Даты
Отправлено: DamonLSD от 16 Февраля 2002, 18:35:25
Здравствуйте!
Подскажите пожалуйста, с помощью чего можно реализовать следующее:
Нужно вывести даты в формате дд/мм/гггг с учетом запроса, например:
за текущую неделю: 11/02/2002 - 16/02/2002
за текущий месяц: 01/02/2002 - 16/02/2002

Заранее большое СПАСИБО!!!
:)
Название: Даты
Отправлено: Demon от 16 Февраля 2002, 22:11:03
А какая структура хранения данных?
Название: Даты
Отправлено: DamonLSD от 17 Февраля 2002, 11:55:37
Данные хранятся в *.mdb , вытаскиваются через ODBC.
А даты хранятся в виде дд/мм/гггг (11/02/2002)
Название: Даты
Отправлено: Evgeny от 18 Февраля 2002, 16:14:31
Для работы с 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 можно форматировать результат.
Название: Даты
Отправлено: DamonLSD от 18 Февраля 2002, 16:33:03
Вопрос не про "Win32::ODBC", а про текущую неделю!!!
С текущим месяцем разобрался.
Название: Даты
Отправлено: Evgeny от 19 Февраля 2002, 18:05:37
Ф-ции 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];   # последний день недели

Потом форматируешь результаты.
Название: Даты
Отправлено: DamonLSD от 20 Февраля 2002, 08:10:58
OK
Сейчас посматрю, что выходит :))