The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Перевести время из секунд в человеческий формат"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Перевести время из секунд в человеческий формат"
Сообщение от Asmerald emailИскать по авторуВ закладки on 03-Мрт-03, 15:10  (MSK)
Есть ли какой-нибудь модуль, который переводит количество секунд в формат "месяцы/недели/часы/минуты/секунды"?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Перевести время из секунд в человеческий формат"
Сообщение от XMan Искать по авторуВ закладки on 03-Мрт-03, 20:58  (MSK)
Смотри функцию localtime
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Перевести время из секунд в человеческий формат"
Сообщение от Bogerm Искать по авторуВ закладки on 04-Мрт-03, 04:51  (MSK)
>Есть ли какой-нибудь модуль, который переводит количество секунд в формат "месяцы/недели/часы/минуты/секунды"?

Есть: Time::localtime;

Но это не единственный способ. Проще всего использовать стандартные функции localtime, gmtime или strftime:

( $seconds, $minutes, $hours, $day, $month, $year, $wday, $yday, $isdst) = localtime($time);

или

printf("Date: d-d-d\n",
     sub {($_[5]+1900, $_[4]+1, $_[3])}->(localtime));

можно использовать её в скалярном контексте:
$string = localtime($time), тогда в строке $string будет время в "человеческом формате", например:
print scalar localtime;

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: Перевести время из секунд в человеческий формат"
Сообщение от Asmerald emailИскать по авторуВ закладки on 04-Мрт-03, 10:59  (MSK)
>Есть: Time::localtime;
>
>Но это не единственный способ. Проще всего использовать стандартные функции localtime, gmtime
>или strftime:
>
>( $seconds, $minutes, $hours, $day, $month, $year, $wday, $yday, $isdst) = localtime($time);
>
>
>или
>
>printf("Date: d-d-d\n",
>     sub {($_[5]+1900, $_[4]+1, $_[3])}->(localtime));
>
>можно использовать её в скалярном контексте:
>$string = localtime($time), тогда в строке $string будет время в "человеческом формате",
>например:
>print scalar localtime;

Опять не то. Я наверное не так объясьнил. Что такое localtime я знаю. Задача такая: дано количество секунд, скажем 3337s надо перевести это в формат 55m37s. А не считать это временем от epoch. Я могу это и скриптом считать, но не хотелось бы изобретать велосипед, если таковой модуль уже есть.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: Перевести время из секунд в человеческий формат"
Сообщение от konst emailИскать по авторуВ закладки on 04-Мрт-03, 12:39  (MSK)

>если таковой модуль уже есть.

Какой модуль!!!!????
просто PRINTF
$sec = $ARGV[0];
printf("%dm%ds",int ($sec/60),$sec`);
# - минуты и секунды
# ИЛИ
printf("%dh%dm%ds",int ($sec/3600),int ($sec/60),$sec`);
# - часы, минуты и секунды

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: Перевести время из секунд в человеческий формат"
Сообщение от Asmerald emailИскать по авторуВ закладки on 04-Мрт-03, 12:43  (MSK)
>
>>если таковой модуль уже есть.
>
>Какой модуль!!!!????
>просто PRINTF
>$sec = $ARGV[0];
>printf("%dm%ds",int ($sec/60),$sec`);
># - минуты и секунды
># ИЛИ
>printf("%dh%dm%ds",int ($sec/3600),int ($sec/60),$sec`);
># - часы, минуты и секунды

О! Это-то и интересовало. Спасибо.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: Перевести время из секунд в человеческий формат"
Сообщение от konst emailИскать по авторуВ закладки on 04-Мрт-03, 12:53  (MSK)
>>
>>>если таковой модуль уже есть.
>>
>>Какой модуль!!!!????
>>просто PRINTF
>>$sec = $ARGV[0];
>>printf("%dm%ds",int ($sec/60),$sec`);
>># - минуты и секунды
>># ИЛИ
>>printf("%dh%dm%ds",int ($sec/3600),int ($sec/60),$sec`);
>># - часы, минуты и секунды
>
>О! Это-то и интересовало. Спасибо.
Какой-то глюк с отображением...
printf("%dh%dm%ds",int ($sec/3600),int ($sec/60),$sec % 60`);
                                                                                ^^^^^^^^^^^^  
(для теста как отобразится:  4%5 = 4 % 5)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: Перевести время из секунд в человеческий формат"
Сообщение от Bogerm Искать по авторуВ закладки on 04-Мрт-03, 16:03  (MSK)
>>>
>>>>если таковой модуль уже есть.
>>>
>>>Какой модуль!!!!????
>>>просто PRINTF
>>>$sec = $ARGV[0];
>>>printf("%dm%ds",int ($sec/60),$sec`);
>>># - минуты и секунды
>>># ИЛИ
>>>printf("%dh%dm%ds",int ($sec/3600),int ($sec/60),$sec`);
>>># - часы, минуты и секунды
>>
>>О! Это-то и интересовало. Спасибо.
>Какой-то глюк с отображением...
>printf("%dh%dm%ds",int ($sec/3600),int ($sec/60),$sec % 60`);
>            
>          
>          
>          
>          
>          
>          
>  ^^^^^^^^^^^^
>(для теста как отобразится:  4%5 = 4 % 5)

Когда-то давно я написал вот такую функцию:

sub print_sec {
        my $num = shift;
        return sprintf("=:d.d", int($num/3600),
                                int(($num - (int($num/3600)*3600))/60),
                int($num - (int($num/60)*60)));
}

Наверное это неэффективно, но работает и мне хватало...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "RE: Перевести время из секунд в человеческий формат"
Сообщение от Asmerald emailИскать по авторуВ закладки on 04-Мрт-03, 18:04  (MSK)
>Когда-то давно я написал вот такую функцию:
>
>sub print_sec {
>        my $num = shift;
>
>        return sprintf("=:d.d", int($num/3600),
>            
>          
>         int(($num -
>(int($num/3600)*3600))/60),
>            
>    int($num - (int($num/60)*60)));
>}
>
>Наверное это неэффективно, но работает и мне хватало...

Я практически так же и сделал.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "RE: Перевести время из секунд в человеческий формат"
Сообщение от pth Искать по авторуВ закладки on 04-Мрт-03, 16:22  (MSK)
C часами, минутами и секундаии (и даже с неделями) - все прекрасно, но как быть с месяцАми?

P.S. Опять же - високосные секунды не учитываются.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "RE: Перевести время из секунд в человеческий формат"
Сообщение от Asmerald emailИскать по авторуВ закладки on 04-Мрт-03, 18:06  (MSK)
>C часами, минутами и секундаии (и даже с неделями) - все прекрасно,
>но как быть с месяцАми?

Месяцев-то всего 12, можно и прописать.

>P.S. Опять же - високосные секунды не учитываются.

В моём случае это не принципиально.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "RE: Перевести время из секунд в человеческий формат"
Сообщение от pth Искать по авторуВ закладки on 04-Мрт-03, 18:23  (MSK)
>>C часами, минутами и секундаии (и даже с неделями) - все прекрасно,
>>но как быть с месяцАми?
>
>Месяцев-то всего 12, можно и прописать

Прописать что? Число дней для каждого месяца? А как определить в каком месяце начался отсчет?

>
>>P.S. Опять же - високосные секунды не учитываются.
>
>В моём случае это не принципиально.

Ну хозяин - барин. (Хотя это была тык сыыть шутка).

  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "RE: Перевести время из секунд в человеческий формат"
Сообщение от Asmerald emailИскать по авторуВ закладки on 04-Мрт-03, 18:28  (MSK)
>>>C часами, минутами и секундаии (и даже с неделями) - все прекрасно,
>>>но как быть с месяцАми?
>>
>>Месяцев-то всего 12, можно и прописать
>
>Прописать что? Число дней для каждого месяца? А как определить в каком
>месяце начался отсчет?

А разве нельзя прописать (1..30), (1..31), (1..28)? Определить можно, дата начала отсчёта присутствует.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "RE: Перевести время из секунд в человеческий формат"
Сообщение от pth Искать по авторуВ закладки on 04-Мрт-03, 18:52  (MSK)
>А разве нельзя прописать (1..30), (1..31), (1..28)?

Ну да я про это же. Число дней в каждом месяце можно прописать (если високосные годины не колышат).

> Определить можно, дата начала отсчёта присутствует.

Разве? Ты же говорил, что имееешь только число секунд и это число надо перевести в месяцы/недели/часы/минуты/секунды. Где в этом числе секунд начало отсчета?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

14. "RE: Перевести время из секунд в человеческий формат"
Сообщение от Asmerald emailИскать по авторуВ закладки on 04-Мрт-03, 18:59  (MSK)
>> Определить можно, дата начала отсчёта присутствует.
>
>Разве? Ты же говорил, что имееешь только число секунд и это число
>надо перевести в месяцы/недели/часы/минуты/секунды. Где в этом числе секунд начало отсчета?
>

Ситуация такая: есть sql-база в которой, есть время подключения (естественно вплоть до секунды) и есть время в секундах, прошедших с времени подключения, т.е. время отключения отсутствует. Так вот надо показывать это время, записанное в секундах, в понимаемом обычным человеком формате.
Хотя мне уже сдаётся, что я это через одно место делаю. Слишком усложняю похоже.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

15. "RE: Перевести время из секунд в человеческий формат"
Сообщение от konst emailИскать по авторуВ закладки on 04-Мрт-03, 19:06  (MSK)
>Ситуация такая: есть sql-база в которой, есть время подключения (естественно вплоть до
>секунды) и есть время в секундах, прошедших с времени подключения, т.е.
>время отключения отсутствует. Так вот надо показывать это время, записанное в
>секундах, в понимаемом обычным человеком формате.
>Хотя мне уже сдаётся, что я это через одно место делаю. Слишком
>усложняю похоже.
Если время подкл. есть в БД => пользуйся стандартными функциями SQL
типа select to_date("Format",Current time - tab.date_of_access) from tab;
Что-нибудь в этом духе. См. функции работы с датами
  Рекомендовать в FAQ | Cообщить модератору | Наверх

16. "RE: Перевести время из секунд в человеческий формат"
Сообщение от Asmerald emailИскать по авторуВ закладки on 04-Мрт-03, 19:36  (MSK)
>Если время подкл. есть в БД => пользуйся стандартными функциями SQL
>типа select to_date("Format",Current time - tab.date_of_access) from tab;
>Что-нибудь в этом духе. См. функции работы с датами

Посмотрел. Действительно, похоже, так гораздо проще. Спасибо за совет.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру