[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: RES: [shell-script] Calcular Hora
From: |
Miguel da Silva |
Subject: |
Re: RES: [shell-script] Calcular Hora |
Date: |
Tue, 28 Sep 2004 14:16:02 -0300 |
Uma vez me encontrei com um problema relacionado com datas: calcular diferenças
de datas e coisas do tipo; uma das soluções que encontrei era um programa que
fazia exatamente isso que o Júlio Cézar falou, mas trabalhando com datas, ou
seja: mudando datas para números e vice-versa. Esse método parece bem
interessante quando a idéia é lidar com medidas que não estão no sistema
decimal.
Até mais, Miguel D.
*********** SEPARADOR DE RESPOSTA ***********
On 28/09/2004 at 01:01 p.m. Julio Cezar Neves - DATAPREVRJ wrote:
>Aê Pessoal,
>2 progs: hton.sh passa horário para numero e ntoh.sh faz o inverso. Então
>para subtrair 2 horários, use hton.sh nos dois e subtaia os números. Para
>somar horas ou minutos use o hton.sh some e em seguida use o ntoh.sh.
>
>Prompt> cat hton.sh
>#!/bin/sh
>#
># Sintaxe: dton.sh [hh:mm:ss | hh mm ss ]
># Recebe um horario e transforma-o na qtd de segundos a partir de 00:00:00
># Caso este horario nao seja informado, a hora atual serah usada como
>default
>#
>if echo "$*" | egrep
>"^(0?[0-9]|1[0-9]|2[0-3]):((0?|[1-5])[0-9]):((0?|[1-5])[0-9])" > /dev/null
>then
> hh=`echo $1 | cut -f1 -d:`
> mm=`echo $1 | cut -f2 -d:`
> ss=`echo $1 | cut -f3 -d:`
>elif echo "$*" | egrep "^(0?[0-9]|1[0-9]|2[0-3]) ((0?|[1-5])[0-9])
>((0?|[1-5])[0-9])" > /dev/null
>then
> hh=$1
> mm=$2
> ss=$3
>elif [ $# -eq 0 ]
>then
> hh=`date "+%H"`
> mm=`date "+%M"`
> ss=`date "+%S"`
>else
> echo "
> Uso: $0 [hh:mm:ss|hh mm ss]. Caso nao seja informado
> parametro, o horario atual sera usado como default.
>" > /dev/tty
> exit 1
>fi
>echo `expr $hh \* 3600 + $mm \* 60 + $ss`
>
>Prompt> cat ntoh.sh
>#!/bin/sh
>#
># Uso: ntoh.sh num (num = qtd de segundo a partir de 00:00:00)
>#
># Recebe um numero e transforma-o em um horario no formato
># [d] hh:mm:ss, indicando quanto tempo passou a partir de
># 00:00:00. Se hora > 24, d receberah a qtd de dias excedentes
>#
>if [ $# -ne 1 ]
>then
> echo "
> Uso: $0 num (num = qtd de segundo a partir de 00:00:00)
>" > /dev/tty
> exit 1
>fi
>
>hh=`expr $1 / 3600`
>if [ $hh -gt 24 ]
>then
> a=`expr $hh / 24`
> b=`expr $hh % 24`
> [ $b -lt 10 ] && b=0$b
> hh="$a $b"
>else
> [ $hh -lt 10 ] && hh=0$hh
>fi
>mm=`expr \( $1 % 3600 \) / 60`
>ss=`expr $1 % 60`
>str=$hh:
>for i in $mm $ss
>do
> [ $i -lt 10 ] && i=0$i
> str=$str$i:
>done
>
>echo $str | cut -f-3 -d:
>
>[ ]s,
>Julio Cezar Neves
>- Gerente do Programa de Software Livre -
>Tel:+55 21 2528-7070 / +55 21 8112-9988
>Fax: +55 21 2528-7646
>mailto:address@hidden
>
>
>| -----Mensagem original-----
>| De: linko_k [mailto:address@hidden]
>| Enviada em: terça-feira, 28 de setembro de 2004 11:28
>| Para: address@hidden
>| Assunto: [shell-script] Calcular Hora
>|
>|
>| Bom Dia,
>|
>| Gostaria de saber como eu faço para clacular hora, exemplo:
>|
>| - um processo começou as 13:59 e terminou as 17:39, como eu faço o
>| calculo para saber o tempo que durou este processo ?
>|
>| - outro exemplo: começou as 23:14 e terminou as 03:48
>|
>|
>|
>| Obrigado,
>| Linko
>|
>|
>|
>|
>| ---------------------------------------------------------------------
>| Esta lista não admite a abordagem de outras liguagens de
>| programação, como perl, C etc. Quem insistir em não seguir
>| esta regra será moderado sem prévio aviso.
>| ---------------------------------------------------------------------
>| Sair da lista: address@hidden
>| ---------------------------------------------------------------------
>| Esta lista é moderada de acordo com o previsto em
>http://www.listas-discussao.cjb.net
>---------------------------------------------------------------------
>
>Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
>---------------------------------------------------------------------
>Esta lista não admite a abordagem de outras liguagens de programação, como
>perl, C etc. Quem insistir em não seguir esta regra será moderado sem
>prévio aviso.
>---------------------------------------------------------------------
>Sair da lista: address@hidden
>---------------------------------------------------------------------
>Esta lista é moderada de acordo com o previsto em
>http://www.listas-discussao.cjb.net
>---------------------------------------------------------------------
>
>Links do Yahoo! Grupos
>
>
>