Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > перевод времени


Автор: gcc 23.6.2008, 03:19
Код

Feb 10 14:11:51


можно вот такое время перекодировать во время системы в секундах 23423423432??

тоесть время которое в сукундах? просто определять сложновато, есть таблица не маленькая в которой столбцы:

Код

day,moth,time 


если я хочу вывести допустим все данные по времени за прошедшую неделю как это сделать?
нужно чтоли весь столбец выводить или как-то методами mysql можно?

Автор: amg 23.6.2008, 06:14
Цитата(gcc @  23.6.2008,  03:19 Найти цитируемый пост)
перекодировать во время системы в секундах

Код
$date = 'Feb 10 14:11:51';

use Time::Local;
my %M = qw(Jan 01 Feb 02 Mar 03 Apr 04 May 05 Jun 06 Jul 07 Aug 08 Sep 09 Oct 10 Nov 11 Dec 12);
my ($M,$D,$h,$m,$s) = $date =~ /(\w+) (\d+) (\d+):(\d+):(\d+)/;
my $sec = timelocal($s,$m,$h,$D,$M{$M}-1,(localtime)[5]);
print "$sec\n";


Цитата(gcc @  23.6.2008,  03:19 Найти цитируемый пост)
вывести допустим все данные по времени за прошедшую неделю как это сделать?
Что то я не понял вопрос.

Автор: n4n0bit 23.6.2008, 10:11
Средствами sql

Код

SELECT * FROM table WHERE date='ddmmyy' and date='ddmmyy';

Автор: nitr 23.6.2008, 11:47
n4n0bit, в Perl средствами SQL  smile 

gcc, смотрите модули Date::* и Time::* на CPAN

Автор: n4n0bit 23.6.2008, 14:47
nitr ну я подразумевал что gcc знает про модуль DBI =)

gcc а откуда ты получаешь такой формат времени? может будет альтернативный способ решение твоего вопроса.

Автор: Bulat 23.6.2008, 16:04
Цитата(nitr @  23.6.2008,  11:47 Найти цитируемый пост)
gcc, смотрите модули Date::* и Time::* на CPAN 

Если быть более точным, вроде бы метод Date_to_Time модуля Date::Calc. По крайней мере я его юзал, для сравнения двух дат smile

Автор: gcc 23.6.2008, 19:11
Цитата(amg @ 23.6.2008,  06:14)
Цитата(gcc @  23.6.2008,  03:19 Найти цитируемый пост)
перекодировать во время системы в секундах

Код
$date = 'Feb 10 14:11:51';

use Time::Local;
my %M = qw(Jan 01 Feb 02 Mar 03 Apr 04 May 05 Jun 06 Jul 07 Aug 08 Sep 09 Oct 10 Nov 11 Dec 12);
my ($M,$D,$h,$m,$s) = $date =~ /(\w+) (\d+) (\d+):(\d+):(\d+)/;
my $sec = timelocal($s,$m,$h,$D,$M{$M}-1,(localtime)[5]);
print "$sec\n";


Цитата(gcc @  23.6.2008,  03:19 Найти цитируемый пост)
вывести допустим все данные по времени за прошедшую неделю как это сделать?
Что то я не понял вопрос.

всем спасибо, вот это подойдет кажеться...

Автор: nitr 23.6.2008, 19:19
n4n0bit, чтобы какую-то дату сравнить или что-то с ней сделать надо использовать БД? smile Это что-то новенько...
Думаю, в данном случае, про БД он бы задал в другом подфоруме smile

Модулей на СПАНе много. Но бывает достаточно способов от amg. Всегда коротко, ясно и практично ;)

Автор: gcc 23.6.2008, 22:11
Цитата(n4n0bit @ 23.6.2008,  14:47)
gcc а откуда ты получаешь такой формат времени? может будет альтернативный способ решение твоего вопроса.

из текстового файла

это с Postfix MTA (письма отправляет), он записывает системныйе дествие, сколько байт и кто куда письма отправлял и и т.д.

Автор: Nab 26.6.2008, 22:28
Это нормальная юниксовая дата smile
А для этого лучше всго годиться Date::Manip.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)