The UNIX function mktime() is used to convert a date in struct tm format to a time_t value. However, mktime assumes that the date value is in the local time zone.
The easiest way to convert a UTC date is by setting the time zone environment variable first, as the following example code demonstrates:
#include <math.h> #include <stdio.h> #include <stdlib.h> #include <time.h> void main(void) { struct tm t; t.tm_mon = 0; // Jan t.tm_mday = 1; t.tm_hour = 0; t.tm_min = 0; t.tm_sec = 0; t.tm_year = 70; t.tm_wday = t.tm_yday = t.tm_isdst = 0; tzname[0] = tzname[1] = "GMT"; timezone = 0; daylight = 0; setenv("TZ", "UTC", 1); printf("%d\n", mktime(&t)); printf("tzname[0]=%s, tzname[1]=%s, timezone=%d, daylight=%d\n", tzname[0], tzname[1], timezone, daylight); }