int main(){ std::cout << std::endl; std::chrono::system_clock::time_point timeNowSysClock = std::chrono::system_clock::now(); std::chrono::system_clock::duration timeDurSysClock= timeNowSysClock.time_since_epoch(); std::cout << "std::chrono::system_clock: " << std::endl; durationSinceEpoch(timeDurSysClock); std::cout << std::endl; auto timeNowStClock = std::chrono::steady_clock::now(); auto timeDurStClock= timeNowStClock.time_since_epoch(); std::cout << "std::chrono::steady_clock: " << std::endl; durationSinceEpoch(timeDurStClock); std::cout << std::endl; auto timeNowHiRes = std::chrono::high_resolution_clock::now(); auto timeDurHiResClock= timeNowHiRes.time_since_epoch(); std::cout << "std::chrono::high_resolution_clock: " << std::endl; durationSinceEpoch(timeDurHiResClock); std::cout << std::endl; }
ptime Time::ToPosixTime(TimeScale& timeScale) const { auto ticks = this->ticks_; // adjust ticks for epoch 1970 int64 epochDelta = Epoch1970 - timeScale.Epoch(); ticks -= epochDelta * timeScale.TicksPerDay(); // now the ticks are epoch'd 1970, so we use 1970,1,1 below // create time duration considering resolution. if(time_duration::ticks_per_second() > timeScale.TicksPerSecond()) // since the following computations are integer calculcations, we distinguish here { int64 conversionRate = time_duration::ticks_per_second() / timeScale.TicksPerSecond(); ticks = conversionRate * ticks; } else { int64 conversionRate = timeScale.TicksPerSecond() / time_duration::ticks_per_second(); ticks = ticks / conversionRate; } // date(1970) + ptime ticks since (1970) time_duration durationSinceEpoch(0, 0, 0, ticks); ptime pt(date(1970, 1, 1), durationSinceEpoch); return pt; }