#include #include #include int main() { time_t cur_time, start, start_gmt, now, now_gmt; struct tm *gmt, mt; long int offset; double diff, part, days, hours, lon, lst; int i; cur_time = time(NULL); printf("Time = %ld\n", cur_time); gmt = gmtime(&cur_time); printf("GMT = %d/%d/%2d %d:%02d:%02d\n", gmt->tm_mon, gmt->tm_mday, gmt->tm_year, gmt->tm_hour, gmt->tm_min, gmt->tm_sec); mt.tm_mon = 2; mt.tm_mday = 21; mt.tm_year = 98; mt.tm_hour = 12; mt.tm_min = 0; mt.tm_sec = 0; start = mktime(&mt); offset = -(timezone / 3600 - daylight); printf("Raw time zone offset = %ld\n", timezone); printf("Daylight Savings = %d\n", daylight); printf("Local hours from GMT = %d\n", offset); start_gmt = start - timezone + (daylight * 3600); printf("March 21 noon (CST) = %ld\n", start); printf("March 21 noon (GMT) = %ld\n", start_gmt); for ( i = 0; i < 12; i++ ) { mt.tm_mon = i; mt.tm_mday = 21; mt.tm_year = gmt->tm_year; mt.tm_hour = 12; mt.tm_min = 0; mt.tm_sec = 0; now = mktime(&mt); offset = -(timezone / 3600 - daylight); printf("Raw time zone offset = %ld\n", timezone); printf("Daylight Savings = %d\n", daylight); printf("Local hours from GMT = %d\n", offset); now_gmt = now - timezone + (daylight * 3600); printf("%d/%d/%d noon (CST) = %ld\n", i+1, 21, 97, now); printf("%d/%d/%d noon (GMT) = %ld\n", i+1, 21, 97, now_gmt); diff = (now_gmt - start_gmt) / (3600.0 * 24.0); printf("Time since 3/21/%2d GMT = %.2f\n", gmt->tm_year, diff); part = fmod(diff, 1.0); days = diff - part; /* hours = gmt->tm_hour + gmt->tm_min/60.0 + gmt->tm_sec/3600.0; */ hours = 12; lon = -112; lst = (days + lon)/15.0 + hours - 12; while ( lst < 0.0 ) { lst += 24.0; } printf("days = %.1f hours = %.2f lon = %.2f lst = %.2f\n", days, hours, lon, lst); } return(0); }