/* Report current TZ offset in minutes (positive for Europe, Asia, negative for Americas) */ /* It works in Windows, cygwin, Linux, Solaris, AIX! */ #include #include int main() { int u_mins,u_date,l_mins,l_date,offset; time_t currtime = time(NULL); struct tm* ptm = gmtime(&currtime); u_mins = ptm->tm_hour*60+ptm->tm_min; u_date = ptm->tm_year*512+ptm->tm_mon*32+ptm->tm_mday; ptm = localtime(&currtime); l_mins = ptm->tm_hour*60+ptm->tm_min; l_date = ptm->tm_year*512+ptm->tm_mon*32+ptm->tm_mday; offset = l_mins - u_mins; if( u_date < l_date ) offset += 24*60; else if( u_date > l_date ) offset -= 24*60; printf("%d min (%.2f hr)\n",offset,(double)offset/60.0); return 0; }