// // epicsTime (const local_tm_nano_sec &tm) // epicsTime::epicsTime (const local_tm_nano_sec &tm) { struct tm tmp = tm.ansi_tm; time_t_wrapper ansiTimeTicks = { mktime (&tmp) }; static const time_t mktimeError = static_cast <time_t> (-1); if (ansiTimeTicks.ts == mktimeError) { throwWithLocation ( formatProblemWithStructTM () ); } *this = epicsTime(ansiTimeTicks); this->addNanoSec(tm.nSec); }
// // epicsTime (const local_tm_nano_sec &tm) // epicsTime::epicsTime (const local_tm_nano_sec &tm) { static const time_t mktimeFailure = static_cast <time_t> (-1); time_t_wrapper ansiTimeTicks; struct tm tmp = tm.ansi_tm; ansiTimeTicks.ts = mktime (&tmp); if (ansiTimeTicks.ts == mktimeFailure) { throwWithLocation ( formatProblemWithStructTM () ); } *this = epicsTime (ansiTimeTicks); unsigned long nSecAdj = tm.nSec % nSecPerSec; unsigned long secAdj = tm.nSec / nSecPerSec; *this = epicsTime ( this->secPastEpoch+secAdj, this->nSec+nSecAdj ); }