Ir para conteúdo
Fórum Script Brasil
  • 0

Pegar data e horario e calcular a diferença de tempo


C++ - Learning

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0

Como os parâmetros de data/hora serão dados? Ano/mês/dia/hora/minuto/segundo?

Uma forma de se calcular a diferença é usando a biblioteca time.h (a função difftime calcula a diferença entre duas datas). Recomendo que leia sobre a biblioteca (http://www.cplusplus.com/reference/clibrary/ctime/), utilizando as funções dela fica fácil calcular a diferença de tempo entre as duas datas.

Segue abaixo um exemplo:

#include <iostream>
#include <time.h>

int main(int argc, char* argv[])
{
    //Tempo inicial e final
    time_t tempo_inicial, tempo_final;
    tempo_inicial=0;
    tempo_final=0;
    //Seta o tempo inicial para 25/05/2011 14:20:35
    tm *tempo_inicial_info=localtime(&tempo_inicial);

    tempo_inicial_info->tm_year=2011-1900; //ano=2011 (é necessário subtrair 1900, pois os anos iniciam em 1900)
    tempo_inicial_info->tm_mon=5-1; //mês=maio (é necessário subtrair 1, pois os meses iniciam no zero)
    tempo_inicial_info->tm_mday=25; //dia=25
    tempo_inicial_info->tm_hour=14; //hora=14
    tempo_inicial_info->tm_min=20; //minuto=20
    tempo_inicial_info->tm_sec=35; //segundo=35

    tempo_inicial=mktime(tempo_inicial_info);
    //Seta o tempo final para 26/05/2011 15:30:50
    tm* tempo_final_info=localtime(&tempo_final);

    tempo_final_info->tm_year=2011-1900; //ano=2011
    tempo_final_info->tm_mon=5-1; //mês=maio
    tempo_final_info->tm_mday=26; //dia=26
    tempo_final_info->tm_hour=15; //hora=15
    tempo_final_info->tm_min=30; //minuto=30
    tempo_final_info->tm_sec=50; //segundo=50

    tempo_final=mktime(tempo_final_info);
    //Calcula a diferença de tempo (segundos)
    double dif=difftime(tempo_final, tempo_inicial);
    std::cout << "Diferenca em segundos: " << dif << std::endl;

    return 0;
}

Conhecida a diferença em segundos, é fácil calcular a diferença em minutos, horas, etc. (basta dividir por 60, 3600, ...)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...