51 int len = strlen( ISOstring );
57 y = strtol( &( ISOstring[startAt] ), NULL, 10 );
58 if ( ISOstring[startAt] ==
'-' || ISOstring[startAt] ==
'+' )
64 m = strtol( &( ISOstring[startAt] ), NULL, 10 );
69 d = strtol( &( ISOstring[startAt] ), NULL, 10 );
74 h = strtol( &( ISOstring[startAt] ), NULL, 10 );
79 min = strtol( &( ISOstring[startAt] ), NULL, 10 );
84 seconds = strtod( &( ISOstring[startAt] ), NULL );
85 setFromUT( y, m - 1, d, h, min, seconds, MJD, forceJulian );
102 int leaps, lastyear, extraDays;
109 if ( forceJulian && year <= 0 )
115 leaps = ( year - 4 ) / 4;
116 MJD->
base_day = year * 365 + leaps + doy - 678943;
118 else if ( forceJulian )
123 leaps = ( year - 1 ) / 4;
124 MJD->
base_day = year * 365 + leaps + doy - 678943;
133 leaps = lastyear / 4 - lastyear / 100 + lastyear / 400;
134 MJD->
base_day = year * 365 + leaps + doy - 678941;
137 MJD->
time_sec = sec + ( (double) min + (
double) hour * 60. ) * 60.;
150 void setFromBCE(
int yearBCE,
int month,
int day,
int hour,
int min,
double sec,
MJDtime *MJD,
int forceJulian )
154 int year = 1 - yearBCE;
155 setFromUT( year, month, day, hour, min, sec, MJD, forceJulian );
161 MJD->
base_day = (int) ModifiedJulianDate;
179 double seconds = cdfepoch * 0.001;
181 MJD->
base_day = (int) ( seconds / 86400.0 );
193 return seconds * 1000.;
232 static char DateTime[50];
233 int y, m, d, hour,
min;
239 breakDownMJD( &y, &m, &d, &hour, &min, &sec, MJD, forceJulian );
249 sec1 = (int) sec / 10;
250 sec -= (double) sec1 * 10;
255 sprintf( DateTime,
"%04d-%02d-%02dT%02d:%02d:%01d%-11.10f", y, m + 1, d, hour, min, sec1, sec );
257 sprintf( DateTime,
"-%04d-%02d-%02dT%02d:%02d:%01d%-11.10f", y, m + 1, d, hour, min, sec1, sec );
260 while ( ( ptr = strrchr( &( DateTime[0] ),
' ' ) ) != NULL )
262 strcat( &( DateTime[0] ),
"Z" );
267 sprintf( DateTime,
"%04d-%02d-%02d %02d:%02d:%01d%-11.10f", y, m + 1, d, hour, min, sec1, sec );
269 sprintf( DateTime,
"-%04d-%02d-%02d %02d:%02d:%01d%-11.10f", y, m + 1, d, hour, min, sec1, sec );
272 slen = strlen( DateTime ) - 1;
273 while ( DateTime[slen] ==
' ' )
275 DateTime[slen] =
'\0';
279 return &( DateTime[0] );
int setFromUT(int year, int month, int day, int hour, int min, double sec, MJDtime *MJD, int forceJulian)
void breakDownMJD(int *year, int *month, int *day, int *hour, int *min, double *sec, const MJDtime *MJD, int forceJulian)