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