87 lines
1.9 KiB
C
87 lines
1.9 KiB
C
|
#include <math.h>
|
||
|
#include <stdio.h>
|
||
|
#include <time.h>
|
||
|
|
||
|
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);
|
||
|
}
|