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)