2017-02-08 2 views

답변

5

time_point이 있다고합시다. 그 객체에 일을 추가하려면 그냥 std::chrono::hoursoperator+를 사용할 수 있습니다

#include <chrono> 
std::chrono::system_clock::time_point t = std::chrono::system_clock::now(); 
std::chrono::system_clock::time_point new_t = t + std::chrono::hours(100 * 24); 
+2

하나는'namespace std :: litterals'을 사용하고, 스타일을 위해서'new_t = t + (100 * 24h)'라고 쓸 수 있습니다. – tforgione

+0

좋아요, time_point를 epoch로 변환 할 수 있습니까? 그 순간을 다른 서비스에서 이식 할 수있는 형식으로 데이터베이스에 저장하고 싶습니다. – cateof

+1

@DragonRock 주석을 편집하기에는 너무 늦었지만 올바른 철자법은'std :: literals'이며 C++입니다. 14 – rustyx

1

크로노 라이브러리에는 달력 기능은 포함하지 않습니다. 당신이 원하는 것을 정확히 달성하는 직접적인 방법은 없습니다.

미래에는 하루에 초 비율의 지속 시간을 사용하여 100 일 분의 시간 소인을 찾을 수 있습니다. 그러나 크로노는 날짜를 계산할 도구가 없습니다.

5

하워드 하이난트의 date library은 무료입니다 (오픈 소스).

#include "date.h" 
#include <iostream> 

int 
main() 
{ 
    using namespace date; 
    using namespace std::chrono; 
    auto now = system_clock::now(); 
    auto today = floor<days>(now); 
    year_month_day future = today + days{100}; 
    std::cout << future << '\n'; 
} 

위의 프로그램은 system_clock::now()와 현재 시간을 가져온 다음 time_pointdays의 정밀도를 가지고 있음을 잘라 : 그것은 역법 서비스 <chrono> 확장합니다. 그런 다음 100 days을 추가하여 향후 time_point을 찾은 다음 사람이 소비하기 위해 {year, month, day} 구조로 변환합니다.

출력은 현재 :

2017-05-19 

당신이 제 3 자 라이브러리의 혜택없이 계산의 유형을 수행 할 경우, 내가보기 엔 작성 좋습니다 chrono::duration days과 같이 :

using days = std::chrono::duration 
    <int, std::ratio_multiply<std::ratio<24>, std::chrono::hours::period>>; 

system_clock::time_pointdays{100}을 추가 할 수 있습니다.

+1

멋지다, 나는 따라갈 것이다. – cateof

+0

std의 ''에 확장 기능을 포함시킬 계획이 있습니까? –

+1

@PiotrSkotnicki : 작업 중 : http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0355r1.html 성공 확률은 50/50입니다. –

관련 문제