Changeset 6268 for trunk/psLib/src/astro/psTime.c
- Timestamp:
- Jan 31, 2006, 1:24:21 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/astro/psTime.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/astro/psTime.c
r6204 r6268 10 10 * @author Ross Harman, MHPCC 11 11 * 12 * @version $Revision: 1. 79$ $Name: not supported by cvs2svn $13 * @date $Date: 2006-01- 26 21:10:22$12 * @version $Revision: 1.80 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2006-01-31 23:24:21 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 93 93 static psTime* convertTimeTTTAI(psTime* time); 94 94 static psTime* convertTimeUTCUT1(psTime* time); 95 95 96 96 97 /** Removes leading and trailing whitespace and # characters from a string. The cleaned string is a new null … … 581 582 time->type = PS_TIME_TAI; 582 583 584 //XXX: Set leapseconds to TRUE 585 // time->leapsecond = true; 583 586 return time; 584 587 } … … 676 679 if(time->type == PS_TIME_UT1) { 677 680 psError(PS_ERR_BAD_PARAMETER_VALUE,true,"Cannot convert from UT1 time type"); 681 // return NULL; 678 682 return time; 679 683 } … … 1161 1165 1162 1166 // Determine Julian and modified Julian dates used in table lookup and time delta calculation 1163 jd = psTimeToJD(time); 1164 mjd = psTimeToMJD(time); 1167 if(time->sec < 0) { 1168 // psTime earlier than epoch 1169 jd = time->sec / SEC_PER_DAY - time->nsec / NSEC_PER_DAY + JD_EPOCH_OFFSET; 1170 mjd = time->sec / SEC_PER_DAY - time->nsec / NSEC_PER_DAY + MJD_EPOCH_OFFSET; 1171 } else { 1172 // psTime greater than epoch 1173 jd = time->sec / SEC_PER_DAY + time->nsec / NSEC_PER_DAY + JD_EPOCH_OFFSET; 1174 mjd = time->sec / SEC_PER_DAY + time->nsec / NSEC_PER_DAY + MJD_EPOCH_OFFSET; 1175 } 1165 1176 1166 1177 // Set ceiling of the julian date to the last entry in the lookup table … … 1205 1216 PS_ASSERT_INT_WITHIN_RANGE(time2->nsec,0,(psU32)((1e9)-1),0); 1206 1217 diff = abs((psS64)p_psTimeGetTAIDelta((psTime*)time1)-(psS64)p_psTimeGetTAIDelta((psTime*)time2)); 1207 1208 1218 return diff; 1209 1219 } … … 1248 1258 PS_ASSERT_INT_WITHIN_RANGE(time->nsec,0,(psU32)((1e9)-1),NAN); 1249 1259 1260 psTime *time2 = p_psTimeCopy(time); 1261 //XXX: ADD says that this formula works only for PS_TIME_TAI, so adding the following: 1262 if (time->type == PS_TIME_UTC || time->type == PS_TIME_TT) { 1263 time2 = psTimeConvert(time2, PS_TIME_TAI); 1264 } 1265 1250 1266 // Julian date conversion 1251 if(time ->sec < 0) {1267 if(time2->sec < 0) { 1252 1268 // psTime earlier than epoch 1253 jd = time ->sec / SEC_PER_DAY - time->nsec / NSEC_PER_DAY + JD_EPOCH_OFFSET;1269 jd = time2->sec / SEC_PER_DAY - time2->nsec / NSEC_PER_DAY + JD_EPOCH_OFFSET; 1254 1270 } else { 1255 1271 // psTime greater than epoch 1256 jd = time->sec / SEC_PER_DAY + time->nsec / NSEC_PER_DAY + JD_EPOCH_OFFSET; 1257 } 1272 jd = time2->sec / SEC_PER_DAY + time2->nsec / NSEC_PER_DAY + JD_EPOCH_OFFSET; 1273 } 1274 1275 psFree(time2); 1258 1276 return jd; 1259 1277 } … … 1266 1284 PS_ASSERT_PTR_NON_NULL(time,NAN); 1267 1285 PS_ASSERT_INT_WITHIN_RANGE(time->nsec,0,(psU32)((1e9)-1),NAN); 1286 psTime *time2 = p_psTimeCopy(time); 1287 //XXX: ADD says that this formula works only for PS_TIME_TAI, so adding the following: 1288 if (time->type == PS_TIME_UTC || time->type == PS_TIME_TT) { 1289 time2 = psTimeConvert(time2, PS_TIME_TAI); 1290 } 1268 1291 1269 1292 // Modified Julian date conversion 1270 if(time ->sec < 0) {1293 if(time2->sec < 0) { 1271 1294 // psTime earlier than epoch 1272 mjd = time ->sec / SEC_PER_DAY - time->nsec / NSEC_PER_DAY + MJD_EPOCH_OFFSET;1295 mjd = time2->sec / SEC_PER_DAY - time2->nsec / NSEC_PER_DAY + MJD_EPOCH_OFFSET; 1273 1296 } else { 1274 1297 // psTime greater than epoch 1275 mjd = time->sec / SEC_PER_DAY + time->nsec / NSEC_PER_DAY + MJD_EPOCH_OFFSET; 1276 } 1298 mjd = time2->sec / SEC_PER_DAY + time2->nsec / NSEC_PER_DAY + MJD_EPOCH_OFFSET; 1299 } 1300 psFree(time2); 1277 1301 return mjd; 1278 1302 } … … 1810 1834 PS_ASSERT_PTR_NON_NULL(inTime, NULL); 1811 1835 psTime *outTime = psTimeAlloc(inTime->type); 1812 *outTime = *inTime; 1836 // *outTime = *inTime; 1837 outTime->sec = inTime->sec; 1838 outTime->nsec = inTime->nsec; 1839 outTime->leapsecond = inTime->leapsecond; 1813 1840 return outTime; 1814 1841 } 1815 1842 1843
Note:
See TracChangeset
for help on using the changeset viewer.
