[RESOLVIDO] DateTime

Discussão em 'EMS , HCM e Totvs 11' iniciado por kikofr, Outubro 22, 2010.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. kikofr

    kikofr Membro Participativo

    Bom dia,

    Estou com o seguinte problema ao fazer um calculo entre dois campos datetime.

    data-criacao = 01-12-2008 17:41:00,000
    data-conclusao = 05-12-2008 16:15:00,000

    Quando faço o calculo data-conclusao - data-criacao, me traz o valor em milisegundos (34044000).

    E a ao converter para hora (STRING((hora-conclusao - hora-criacao), "HH:MM:SS") me traz apenas 6:40:00, sendo que passou quase 4 dias.

    ALguem conhece uma maneira de calcular dois campos datetime da forma correta?

    Obrigado desde já.
  2. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    Caro colega, encontrei um código no forum que calcula intervalos entre DATE, ajustei a rotina para que fosse feito pelo intervalo entre DATETIME e mostrasse o tempo em Horas, Minutos e Segundos, segue a lógica abaixo.

    Código:
    
    def var dt-data-ini     as datetime no-undo.
    def var dt-data-fim     as datetime no-undo.
    def var dt-aux          as datetime no-undo.
    
    def var i-ano           as int      no-undo.
    def var i-mes           as int      no-undo.
    def var i-dia           as int      no-undo.
    def var i-hor           as int      no-undo.
    def var i-min           as int      no-undo.
    def var i-seg           as int      no-undo.
    
    assign dt-data-ini = datetime("01-12-2008 17:41:00.000")
           dt-data-fim = datetime("05-12-2008 16:15:10.000")
           i-ano       = 0
           i-mes       = 0
           i-dia       = 0
           i-hor       = 0
           i-min       = 0
           i-seg       = 0.
    
    assign dt-aux = dt-data-ini.
    
    /* Contar a quantidade de anos */
    assign i-ano = interval(dt-data-fim, dt-aux,"years").
    if i-ano > 0 then
        assign dt-aux = add-interval(dt-aux, i-ano,"years").
    
    /* Contar a quantidade de meses */
    assign i-mes = interval(dt-data-fim, dt-aux, "months").
    if i-mes > 0 then 
        assign dt-aux = add-interval(dt-aux, i-mes, "months").
    
    /* Contar a quantidade de dias */
    assign i-dia = interval(dt-data-fim, dt-aux, "days").
    if i-dia > 0 then 
        assign dt-aux = add-interval(dt-aux, i-dia, "days").
    
    /* Contar a quantidade de horas */
    assign i-hor = interval(dt-data-fim, dt-aux, "hours").
    if i-hor > 0 then 
        assign dt-aux = add-interval(dt-aux, i-hor, "hours").
    
    /* Contar a quantidade de minutos */
    assign i-min = interval(dt-data-fim, dt-aux, "minutes").
    if i-min > 0 then 
        assign dt-aux = add-interval(dt-aux, i-min, "minutes").
    
    /* Contar a quantidade de minutos */
    assign i-seg = interval(dt-data-fim, dt-aux, "seconds").
    
    message "Quantidade de Ano(s)"  chr(09) ": " + string(i-ano) skip
            "Quantidade de Mes(es)" chr(09) ": " + string(i-mes) skip
            "Quantidade de Dia(s)"  chr(09) ": " + string(i-dia) skip
            "Quantidade de Hora(s)" chr(09) ": " + string(i-hor) skip
            "Quantidade de Min(s)"  chr(09) ": " + string(i-min) skip
            "Quantidade de Seg(s)"  chr(09) ": " + string(i-seg) 
            view-as alert-box info buttons ok title "Resultado".
    
    
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página