Страница 1 из 1
[PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-07 22:10:31
Alex Keda
как сабж посчитать?
задача простая, мне надо на момент запуска скрипта знать сколько прошло секунд от начала суток, по времени сервера где этот скрипт и работает
===
с какого конца подступиться не знаю - лезут в голову извращённые методы с запросом в базу - на SQL такие задачки на раз решаются...
но не хочется. т.к. базы нет.
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-07 22:40:52
vadim64
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 0:14:10
ProFTP
Код: Выделить всё
# perl -MPOSIX -e 'print mktime((0)x3, sub { $_[3],$_[4]+1,$_[5] }->(localtime))'
1307484000
выведит время в unixtime за текущий день за 0-0-0 часов...
(может быть есть неточность, надо смотреть)
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 8:00:37
FiL
ProFTP писал(а):Код: Выделить всё
# perl -MPOSIX -e 'print mktime((0)x3, sub { $_[3],$_[4]+1,$_[5] }->(localtime))'
1307484000
выведит время в unixtime за текущий день за 0-0-0 часов...
(может быть есть неточность, надо смотреть)
a зачем +1?
Как раз его не надо вроде.
Ну и полностью ответ на поставленную задачу тогда -
Код: Выделить всё
perl -MPOSIX -e 'print time-mktime((0)x3, sub { $_[3],$_[4],$_[5] }->(localtime))'
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 13:52:06
Alex Keda
ненавижу этот язык...
а можно, для дебилов, однострочное представление разложить на десяток строк с использованием промежуточных переменных, чтобы понятно было что присходит?
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 14:00:24
Alex Keda
Код: Выделить всё
serv3# /root/scripts/stat/get.resource.usage.pl
Undefined subroutine &main::mktime called at /root/scripts/stat/get.resource.usage.pl line 25, <MYTMP> line 4276.
serv3#
Код: Выделить всё
serv3# grep mktime /root/scripts/stat/get.resource.usage.pl
$num_seconds = (time-mktime((0)x3, sub { $_[3],$_[4],$_[5] }->(localtime)));
serv3#
не фурычит
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 14:07:49
Alex Keda
помогло...
первый вопрос отсатёся открытым - я не понимаю как это работает =(
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 14:31:21
FreeBSP
как я понял, идея такая
1) получаем timestamp для 0:00:00 текущего дня
2) получаем текущий timestamp.
3) вычитанием первого из второго получаем искомое число секунд
Код: Выделить всё
$num_seconds = (
time - # из теккущего timestamp вычитаем
mktime( # другой timestampб вероятно на начало текущих суток
(0)x3, # особоая, чорная перловая магия
sub { $_[3], $_[4], $_[5] }->(localtime) # тут вероятно идет извлечение из полученой даты вида Yr Mo Dy Hr Mn Sc последних трех составляющих - текуих часов, мин и секунд. скорее всего задается прям сразу процедура-обработчик для возвращаемого значения. возвращается массив, на обработчик он поступает как $_, и из него последние три элемента выкорчовываем
) # mktime
);
P.S.
Alex Keda писал(а):ненавижу этот язык...
+1

Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 15:28:03
Alex Keda
time - это что? если функция то почему не записана как time() ?
как можно вообще на таком языке писать. код должен сам себя документировать, а тут одна строка и надо поллитра, каждому, чтобы разобраться.
--
всё равно не понимаю.
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 15:35:44
ProFTP
это можно написать так:
Код: Выделить всё
use POSIX qw(strftime);
strftime("%Y-%m-%d", localtime)
только потом c текущего года надо было отнять 1900
ЗЫ: пишите так как вам удобно
FiL писал(а):
a зачем +1?
Как раз его не надо вроде.
точно, не заметил
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 17:12:31
FreeBSP
Alex Keda писал(а):time - это что? если функция то почему не записана как time() ?
как можно вообще на таком языке писать. код должен сам себя документировать, а тут одна строка и надо поллитра, каждому, чтобы разобраться.
черная перловая магия

наверное "если перед именем нет явного обозначения, что это переменная, и нет такой константы, то это функция" или что то типа того
я сам тут больше на очучения ориентируюсь, а на не понимание

Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 17:27:43
rmn
что-то вы тут лишнего понаписали. какие-то годы, таймстампы...
число секунд от начала суток равно:
где:
h - текущий час
m - текущая минута
s - текущая секунда
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 17:38:32
FreeBSP
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 18:12:09
Alex Keda
rmn писал(а):что-то вы тут лишнего понаписали. какие-то годы, таймстампы...
число секунд от начала суток равно:
где:
h - текущий час
m - текущая минута
s - текущая секунда
это как, в коде?
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 18:28:07
rmn
Alex Keda писал(а):
это как, в коде?
на php так:
Код: Выделить всё
$date = explode(":", date("h:i:s"));
$seconds = $date[0] * 3600 + $date[1] * 60 + $date[2];
perl не хочу знать

Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 19:38:34
Alex Keda
с пыхом и сам разобрался бы

там всё прозрачней
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 19:56:37
FreeBSP
seconds.php
Код: Выделить всё
#! /usr/local/...../php-cgi
<?php
list($h, $i, $s) = explode(":", date("h:i:s"));
echo $h * 3600 + $i * 60 + $s
?>
Код: Выделить всё
#!/usr/bin/perl
...
$secs=`seconds.php`
...
ы?
или
Код: Выделить всё
#!/usr/bin/perl
...
$secs=`/bin/date ...`
...
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 20:37:16
rmn
FreeBSP писал(а):
или
Код: Выделить всё
#!/usr/bin/perl
...
$secs=`/bin/date ...`
...
в перле нет встроенной функции, чтобы узнать текущее время?
---
как-то так:
Код: Выделить всё
my ($sec,$min,$hour,$mday,$mon,$year, $wday,$yday,$isdst) = localtime time;
my $seconds = $hour*3600 + $min*60 + $sec;
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-08 22:07:25
thefree
Код: Выделить всё
perl -e 'print sub { $_[0]+$_[1]*60+$_[2]*3600 }->(localtime);'
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-09 0:21:22
ProFTP
FiL писал(а):
Ну и полностью ответ на поставленную задачу тогда -
у тебя там там нету знакомых перл программистов?
ты там не знакомишься нигде в Маями?
давай сделаем компанию Filin America online corp Inc

Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-09 3:58:11
FiL
Перловые программисты знакомые есть. Не в Маями, правда.
Но я к ним не отношусь. Я перл также ненавижу, как и большинство в этом топике

Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-09 4:00:27
FiL
rmn писал(а):
как-то так:
Код: Выделить всё
my ($sec,$min,$hour,$mday,$mon,$year, $wday,$yday,$isdst) = localtime time;
my $seconds = $hour*3600 + $min*60 + $sec;
Для нормальных людей лучше не "localtime time", а "localtime (time)" или просто "localtime()". Оно в таком виде понятнее

Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-10 12:28:47
ProFTP
FiL писал(а):Перловые программисты знакомые есть. Не в Маями, правда.
Но я к ним не отношусь. Я перл также ненавижу, как и большинство в этом топике

но там же платят $900 в день!
Senior Perl Developer @ Global Investment Bank - Jersey City, NJ
для обычного программиста 600$ в день
ЗЫ: ваш проект гавно - но мы же вам платим
© 
Re: [PERL] сколько прошло секунд от начала суток
Добавлено: 2011-05-10 22:07:18
FiL
900 - это corp-to-corp. Реально человеку дай Б-г половину получить в руки. Даже если 500 баксов в день, то это 60 баксов в час (причем плата "в день" меня несколько смущает. окажется, что надо работать по 12 часов в день без доплаты). 60 в час, минус все налоги, минус всякие там расходы на страховку и прочие радости, которые положены белым людям на постоянной работе (в отличии от контракта) и получается, что весьма так себе зарплатка. Побольше моей процентов на 30-40, но и гемора побольше на порядок.
P.S. И все равно я не перл-программист.
