std::chrono

得到epoch以来的秒数
http://www.cplusplus.com/reference/chrono/time_point/time_since_epoch/

#include <iostream>
#include <chrono>
using namespace std::chrono;

system_clock::time_point tp = system_clock::now();
system_clock::duration dtn = tp.time_since_epoch();

std::cout << “current time since epoch, expressed in:” << std::endl;
std::cout << “periods: ” << dtn.count() << std::endl;
std::cout << “seconds: ” << dtn.count() * system_clock::period::num / system_clock::period::den;
std::cout << std::endl;

current time since epoch, expressed in:
periods: 1338280396212871
seconds: 1338280396
==============================
sleep
std::this_thread::sleep_for(std::chrono::milliseconds(5));
=========================
计算时间差(毫秒)
auto t1 = system_clock::now();
auto t2 = system_clock::now();
double ms1 = (double)duration_cast<nanoseconds>(t2-t1).count() / 1000.0 / 1000.0;
================================

// duration constructor
#include <iostream>
#include <ratio>
#include <chrono>

int main ()
{
typedef std::chrono::duration<int> seconds_type;
typedef std::chrono::duration<int,std::milli> milliseconds_type;
typedef std::chrono::duration<int,std::ratio<60*60>> hours_type;

hours_type h_oneday (24); // 24h
seconds_type s_oneday (60*60*24); // 86400s
milliseconds_type ms_oneday (s_oneday); // 86400000ms

seconds_type s_onehour (60*60); // 3600s
//hours_type h_onehour (s_onehour); // NOT VALID (type truncates), use:
hours_type h_onehour (std::chrono::duration_cast<hours_type>(s_onehour));
milliseconds_type ms_onehour (s_onehour); // 3600000ms (ok, no type truncation)

std::cout << ms_onehour.count() << “ms in 1h” << std::endl;

return 0;
}

3600000ms in 1h
========================
std::chrono::system_clock::to_time_t
// system_clock::to_time_t
#include <iostream>
#include <ctime>
#include <ratio>
#include <chrono>

int main ()
{
using namespace std::chrono;

duration<int,std::ratio<60*60*24> > one_day (1);

system_clock::time_point today = system_clock::now();
system_clock::time_point tomorrow = today + one_day;

time_t tt;

tt = system_clock::to_time_t ( today );
std::cout << “today is: ” << ctime(&tt);

tt = system_clock::to_time_t ( tomorrow );
std::cout << “tomorrow will be: ” << ctime(&tt);

return 0;
}

today is: Wed May 30 12:38:06 2012
tomorrow will be: Thu May 31 12:38:06 2012

Categories:   IT

Comments