Trabalhando condicionais com horas em C

Bom dia! galera… preciso criar uma condicional para valores de horário para um relógio de ponto, segue abaixo a explicação:

O relógio atualmente desconta as horas do funcionário (8 horas diárias) para mais ou para menos.
Se o funcionário trabalhar 08:01 ele soma um minuto de hora extra…
De acordo com as normas da CLT eu preciso criar 10 minutos de tolerância para mais ou para menos.

Basicamente:

CASO FUNCIONÁRIO_TRABALHA (MAIOR QUE) "08:10" = VERDADEIRO //CONTA AS HORAS EXTRAS PRA MAIS
CASO 2 FUNCIONÁRIO_TRABALHA (MENOR QUE) "07:50" = VERDADEIRO //CONTA AS HORAS EXTRAS PRA MENOS
OUTRO CASO FUNCIONÁRIO_TRABALHA (MAIOR OU IGUAL QUE) "7:50" OU (MENOR OU IGUAL) "8:10" = FALSO // NÃO CONTA AS HORAS EXTRAS

Alguém pode me dar uma luz de como eu posso resolver isso com a biblioteca time.h ou algo similar?

Desde já muito grato!

Bom dia, já resolveu? Caso não, avisa que te ajudo. Valeu.

ola

em primeiro lugar time.h não é uma bilbioteca: isso é um arquivo header que é “socado” no teu codigo fonte pelo pre-processador C para que vc tenha acesso as Macros, as constantes, as definições de tipo e prototipos de funções. as funções em si fazem parte da biblioteca basica libc

dito isso, na time.h vc encontra o tipo struct tm

struct tm {
   int tm_sec;         /* seconds,  range 0 to 59          */
   int tm_min;         /* minutes, range 0 to 59           */
   int tm_hour;        /* hours, range 0 to 23             */
   int tm_mday;        /* day of the month, range 1 to 31  */
   int tm_mon;         /* month, range 0 to 11             */
   int tm_year;        /* The number of years since 1900   */
   int tm_wday;        /* day of the week, range 0 to 6    */
   int tm_yday;        /* day in the year, range 0 to 365  */
   int tm_isdst;       /* daylight saving time             */
};

opa, vc tem hora e minuto ali, ja ajuda bastante. vc poderia tentar criar uma struct tm, converter para time_t via mktime

https://www.tutorialspoint.com/c_standard_library/c_function_mktime.htm

e, então, usar difftime para entender a diferença em segundos

https://www.tutorialspoint.com/c_standard_library/c_function_difftime.htm

confuso? eu imagino que sim. da pra não usar time.h se vc utilizar variaveis inteiras e armazenar a duração em minutos desde o horario 00:00.

entrada int;
entrada = 8 * 60 + 10; /* hora + minutos */
if ( entrada > x ) {
...

o problema dessa abordagem é quando vc passa de um dia para o outro.

2 curtidas