I want to extract hours, minutes, and seconds as integer values from a time_t value representing seconds from an era.
The value for several hours is incorrect. What for?
#include <stdio.h> #include <time.h> #include <unistd.h> int main() { char buf[64]; while (1) { time_t t = time(NULL); struct tm *tmp = gmtime(&t); int h = (t / 360) % 24; /* ### My problem. */ int m = (t / 60) % 60; int s = t % 60; printf("%02d:%02d:%02d\n", h, m, s); /* For reference, extracts the correct values. */ strftime(buf, sizeof(buf), "%H:%M:%S\n", tmp); puts(buf); sleep(1); } }
Exit (hour should be 10)
06:15:35 10:15:35 06:15:36 10:15:36 06:15:37 10:15:37
source share