Std::chrono
표준 헤더 chrono
를 포함하여 기간 및 시간 인스턴트를 나타내고 조작하는 클래스와 함수를 정의합니다.
Classes
-
duration
: 시간 간격을 포함하는 유형을 설명합니다. -
time_point
: 시점을 나타내는 형식을 설명합니다.
Structure
-
common_type
: duration 및 time_point의 인스턴스화에 대한 템플릿 클래스 common_type의 특수화를 설명합니다. -
duration_values
: duration 템플릿 매개 변수 Rep에 대한 특정 값을 제공합니다. -
steady_clock
: steady 클록을 나타냅니다. -
system_clock
: 시스템의 실시간 시계를 기준으로 하는 시간 형식을 나타냅니다. -
treat_as_floating_point
: 형식이 부동 소수점 형식으로 처리될 수 있는지 여부를 지정합니다.
Functions
-
duration_cast
: 지정된 형식으로 duration 개체를 캐스팅합니다. -
time_point_cast
: 지정된 형식으로 time_point 개체를 캐스팅합니다.
Now Milliseconds
현재시간을 Milliseconds 단위로 획득하는 방법은 아래와 같다.
unsigned long milliseconds_since_epoch =
std::chrono::system_clock::now().time_since_epoch() /
std::chrono::milliseconds(1);
OR:
auto duration = now.time_since_epoch();
auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
time_t convert
using namespace std;
using namespace chrono;
// time_point -> time_t
std::chrono::system_clock::time_point currTimePoint = system_clock::now();
time_t currTime = system_clock::to_time_t(currTimePoint);
// time_t -> time_point
time_t currTime = time(nullptr);
system_clock::time_point currTimePoint = system_clock::from_time_t(currTime);
Print timespemp
#include <chrono>
#include <ctime>
#include <iostream>
template <typename Duration>
void print_time(tm t, Duration fraction) {
using namespace std::chrono;
std::printf("[%04u-%02u-%02u %02u:%02u:%02u.%03u]\n", t.tm_year + 1900,
t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec,
static_cast<unsigned>(fraction / milliseconds(1)));
// VS2013's library has a bug which may require you to replace
// "fraction / milliseconds(1)" with
// "duration_cast<milliseconds>(fraction).count()"
}
int main() {
using namespace std;
using namespace std::chrono;
system_clock::time_point now = system_clock::now();
system_clock::duration tp = now.time_since_epoch();
tp -= duration_cast<seconds>(tp);
time_t tt = system_clock::to_time_t(now);
print_time(*gmtime(&tt), tp);
print_time(*localtime(&tt), tp);
}
Category
See also
Favorite site
- Date and time utilities
- [추천] 수까락의 프로그래밍 이야기: C++11 chrono 1
- MSDN: chrono
-
The C++ Standard Library: Utilities - Clocks and Timers(위험한 페이지 이므로 가급적 PDF로 읽어야 한다)2 - How to print current time (with milliseconds) using C++ / C++11