#include #include #include #include #include void parsedate(char *timestr,int *y,int *m, int *d); void parsetime(char *timestr,int *h,int *mt, int *sec); int main() { time_t rawtime; int dofyr,h,mt,sec,y,m,d; double day,LMST,N,f1; int hST,mST,sST; double glong = -81.412303; int zone = 0; int dwhole; struct tm * timeinfo; char timestr[80]; time(&rawtime); timeinfo = localtime(&rawtime); strcpy(timestr,asctime(timeinfo)); parsedate(timestr,&y,&m,&d); time(&rawtime); timeinfo = localtime(&rawtime); parsetime(timestr,&h,&mt,&sec); day = 367.0*y-floor(7.0*(y+floor((m+9.0)/12.0))/4.0) + floor(275.0*m/9.0) + d - 730531.5 + (h + mt/60.0 + sec/3600.0)/24.0; LMST = 280.46061837 + 360.98564736629 * day + glong; N = floor(LMST/360.0); LMST = (LMST - 360.0*N)/15.0 - zone; if(LMST >= 24.0) LMST -= 24.0; if(LMST < 0.0) LMST += 24.0; printf("%f\n",LMST); } int g(int y,int m,int d) { m = (m+9)%12; y = y - m/10; return(365*y+y/4-y/100+y/400+(m*306+5)/10 + (d-1)); } void parsedate(char *timestr,int *y,int *m, int *d) { char *Month[12] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep", "Oct","Nov","Dec"}; char buffer[80],day[3],year[5]; char *tmp; char month[4]; int i; tmp = (char*)calloc(10,sizeof(char)); strcpy(buffer,timestr); tmp = strtok(buffer," "); tmp = strtok(NULL," "); strcpy(month,tmp); for(i=0;i<12;i++) { if(strcmp(month,Month[i]) == 0) { *m = i+1; break; } } tmp = strtok(NULL," "); strcpy(day,tmp); *d = atoi(day); tmp = strtok(NULL," "); tmp = strtok(NULL," "); strcpy(year,tmp); *y = atoi(tmp); return; } void parsetime(char *timestr,int *h,int *mt, int *sec) { char buffer[80],tme[80]; char *tmp; int i; tmp = (char*)calloc(20,sizeof(char)); strcpy(buffer,timestr); tmp = strtok(buffer," "); tmp = strtok(NULL," "); tmp = strtok(NULL," "); tmp = strtok(NULL," "); strcpy(tme,tmp); tmp = strtok(tme,":"); *h = atoi(tmp); tmp = strtok(NULL,":"); *mt = atoi(tmp); tmp = strtok(NULL,":"); *sec = atoi(tmp); return; }