C++
사용하는 날짜와 시간 머리글
수색…
측정 시간
system_clock
은 프로그램 실행의 일부 동안 경과 된 시간을 측정하는 데 사용할 수 있습니다.
c ++ 11
#include <iostream>
#include <chrono>
#include <thread>
int main() {
auto start = std::chrono::system_clock::now(); // This and "end"'s type is std::chrono::time_point
{ // The code to test
std::this_thread::sleep_for(std::chrono::seconds(2));
}
auto end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed = end - start;
std::cout << "Elapsed time: " << elapsed.count() << "s";
}
이 예제에서 sleep_for
는 std::chrono::seconds
측정 된 시간 동안 활성 스레드를 잠자기 상태로 만드는 데 사용되었지만 중괄호 사이의 코드는 실행하는 데 시간이 걸리는 함수 호출 일 수 있습니다.
두 날짜 사이의 일 수 찾기
이 예에서는 두 날짜 사이의 일 수를 찾는 방법을 보여줍니다. 날짜는 년 / 월 / 일 및 추가로시 / 분 / 초로 지정됩니다.
프로그램은 2000 년 이후의 일수를 계산합니다.
#include <iostream>
#include <string>
#include <chrono>
#include <ctime>
/***
* Creates a std::tm structure from raw date.
*
* \param year (must be 1900 or greater)
* \param month months since January – [1, 12]
* \param day day of the month – [1, 31]
* \param minutes minutes after the hour – [0, 59]
* \param seconds seconds after the minute – [0, 61](until C++11) / [0, 60] (since C++11)
*
* Based on http://en.cppreference.com/w/cpp/chrono/c/tm
*/
std::tm CreateTmStruct(int year, int month, int day, int hour, int minutes, int seconds) {
struct tm tm_ret = {0};
tm_ret.tm_sec = seconds;
tm_ret.tm_min = minutes;
tm_ret.tm_hour = hour;
tm_ret.tm_mday = day;
tm_ret.tm_mon = month - 1;
tm_ret.tm_year = year - 1900;
return tm_ret;
}
int get_days_in_year(int year) {
using namespace std;
using namespace std::chrono;
// We want results to be in days
typedef duration<int, ratio_multiply<hours::period, ratio<24> >::type> days;
// Create start time span
std::tm tm_start = CreateTmStruct(year, 1, 1, 0, 0, 0);
auto tms = system_clock::from_time_t(std::mktime(&tm_start));
// Create end time span
std::tm tm_end = CreateTmStruct(year + 1, 1, 1, 0, 0, 0);
auto tme = system_clock::from_time_t(std::mktime(&tm_end));
// Calculate time duration between those two dates
auto diff_in_days = std::chrono::duration_cast<days>(tme - tms);
return diff_in_days.count();
}
int main()
{
for ( int year = 2000; year <= 2016; ++year )
std::cout << "There are " << get_days_in_year(year) << " days in " << year << "\n";
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow