none
Multiplicar horas por inteiros

    Question

  • Boa tarde
    Eu tenho um variável do tipo string que esta com o valor em horas armazenado:

    Dim horas As String = "11:00:00"

    Como faço para multiplicar essa hora por um valor inteiro? Por exemplo:

    11:00:00 * 8

    isso daria se não me engano 88:00:00 hs
    Alexandre
    Thursday, June 18, 2009 7:16 PM

Answers

  • Alexandre,

    O correto para obter os minutos é: (total_de_segundos Mod 3600) / 60 = Qtde em minutos.

    Veja se funciona agora.

    Abraços.

    Luiz Gustavo
    Friday, June 19, 2009 4:51 PM
  • Alexandre,

    Veja só, você pode fazer o seguinte:

    Imagino que esta carga de trabalho é uma variante, ou seja, o funcionário pode fazer 11:00:00, como também pode fazer 10:50:00, como 12:30:10, ou seja, cada dia ele realiza uma carga diferente.

    Você pode fazer um cálculo durante o período desejado convertendo o valor das horas em segundos, digo isso para ter um cálculo preciso das horas trabalhadas.
    Exemplo:

    Primeiro dia (11:02:45 hs)
    ------------------------------------------------
    11 * 3600 = 39600 (horas em segundos)
    02 * 60 = 120 (minutos em segundos)
    45 = ñ precisa converter

    Segundo dia (10:58:19 hs)
    ------------------------------------------------
    10 * 3600 = 36000 (horas em segundos)
    58 * 60 = 3480 (minutos em segundos)
    19 = ñ precisa converter


    Some tudo, e guarde em uma variável totalizadora, ou seja, faça a conversão em segundos para todos os dias (através de uma estrutura de repetição de sua preferência) e guarde nessa variável:


    No final, você terá uma resultante (de acordo com os 2 dias) de 79264 segundos. Converta isso para horas da seguinte forma:


    79264  / 3600 = Qtde em horas (22 hs)
    (79264 resto 3600) / 60 = Qtde em minutos. (1 minuto)
    (79264 resto 60) = Qtde em segundos. (4 segundos)

    Ou seja, em 2 dias, o funcionário teve uma carga horária de 22:01:04 hs.

    Espero tê-lo ajudado.

    Luiz Gustavo
    Friday, June 19, 2009 12:13 PM

All replies

  • Alexandre,

    O que você precisa exatamente fazer com essa hora?

    Creio que nesse caso vc terá que pegar partes da string, seja a hora, o minuto ou o segundo, e multiplicar pelo valor desejado.

    Conforme for a sua necessidade utilize as funções de AddDays, AddHours, etc, que são métodos do próprio .NET framework.

    Voce pode também utilizar conversões to tipo, Convert.ToDateTime("18Jun2009 11:00:00"), o qual lhe retornará o tipo DateTime, e daí vc consegue manipular melhor o objeto.

    Espero tê-lo ajudado.

    Luiz Gustavo
    Thursday, June 18, 2009 8:01 PM
  • Cará obrigado pela atenção!

    Já tentei usar o que você mensionou mas não funcionou, vou explicar melhor o que preciso a idéia é a seguinte:

    Cada dia tem uma carga de trabalho de 11:00:00 hs quantas horas eu terei em 8 dias?

    É isso que eu preciso saber em cada dia de 11:00:00 quantas horas terei em x dias!

    Você tem alguma idéia de como fazer esse cálculo?
    Alexandre
    Thursday, June 18, 2009 8:12 PM
  • Alexandre,

    Veja só, você pode fazer o seguinte:

    Imagino que esta carga de trabalho é uma variante, ou seja, o funcionário pode fazer 11:00:00, como também pode fazer 10:50:00, como 12:30:10, ou seja, cada dia ele realiza uma carga diferente.

    Você pode fazer um cálculo durante o período desejado convertendo o valor das horas em segundos, digo isso para ter um cálculo preciso das horas trabalhadas.
    Exemplo:

    Primeiro dia (11:02:45 hs)
    ------------------------------------------------
    11 * 3600 = 39600 (horas em segundos)
    02 * 60 = 120 (minutos em segundos)
    45 = ñ precisa converter

    Segundo dia (10:58:19 hs)
    ------------------------------------------------
    10 * 3600 = 36000 (horas em segundos)
    58 * 60 = 3480 (minutos em segundos)
    19 = ñ precisa converter


    Some tudo, e guarde em uma variável totalizadora, ou seja, faça a conversão em segundos para todos os dias (através de uma estrutura de repetição de sua preferência) e guarde nessa variável:


    No final, você terá uma resultante (de acordo com os 2 dias) de 79264 segundos. Converta isso para horas da seguinte forma:


    79264  / 3600 = Qtde em horas (22 hs)
    (79264 resto 3600) / 60 = Qtde em minutos. (1 minuto)
    (79264 resto 60) = Qtde em segundos. (4 segundos)

    Ou seja, em 2 dias, o funcionário teve uma carga horária de 22:01:04 hs.

    Espero tê-lo ajudado.

    Luiz Gustavo
    Friday, June 19, 2009 12:13 PM
  • Bom dia
    Obrigado pela atenção

    Então cara a sua idéia realmente é show porém eu não vou ter dias com horas diferentes é como eu te falei mesmo vou vender quantidade de horas fixas mesmo por dia pois é a quantidade de horas que o cliente vai usar meu produto então vou vender para ele 10 horas dias e será por exemplo 5 dias, então acredito que se eu pegar o modo que vocÊ me explicou e multiplicar ao invés de somar vai funcionar, certo?

    seria isso:

    10 * 3600 = 36000 (horas em segundos)
    58 * 60 = 3480 (minutos em segundos)
    19 = ñ precisa converter

    total = 39499 * 8 = 315992

    Agora me explica ou coisa por favor no seu resultado final para achar os minutos  e segundos vocÊ informou que usor resto, como faço para no vb.net faze esse calculo usando resto?

    Obrigado pela atenção mais uma vez

    Alexandre
    Friday, June 19, 2009 12:23 PM
  • Alexandre,

    Use a função Mod no vb, ou % no C#.

    Por exemplo:

    36000 Mod 60
    36000 % 60

    Se tudo der certo, não esqueça de marcar esta thread como respondida.

    Forte abraço.

    Luiz Gustavo
    Friday, June 19, 2009 12:36 PM
  • E ae blz

    Cara valeu pela dica mas ainda esta dando erro na hora de pegar o resto dos minutos, olha como estou fazendo me baseando em 10:30:00 hs baseado em 3 dias

    hora = 10 * 3600
    minuto = 30 * 60

    total = (hora + minuto) * 3

    horas = total/3600
    minutos horas Mod 60

    O valor de horas esta chegando ok mas os de minutos esta errado o valor não tem nada a ver, estou capturando certo a parte dos minutos?

    Alexandre
    Friday, June 19, 2009 2:04 PM
  • Alexandre,

    O correto para obter os minutos é: (total_de_segundos Mod 3600) / 60 = Qtde em minutos.

    Veja se funciona agora.

    Abraços.

    Luiz Gustavo
    Friday, June 19, 2009 4:51 PM
  • Cara entendi era isso mesmo funcionou, valeu pela ajuda
    Alexandre
    Friday, June 19, 2009 6:30 PM