2014-01-30 3 views
1

C++11 버전의 matlabs datenum 버전이 있습니까?크로노 C++ 11 버전의 matlabs datenum

가 이미 나는이 datenum을 matlabs하지만 여기에 기본적으로 같은 당신이 링크 질문의 허용 대답으로 수행하는 방법이 무엇인지 모른다는이 post

답변

2

아니요, 없습니다. 그러나 chrono 호환 가능 날짜 라이브러리에 대한 알고리즘 작성 방법은 here is a "how-to" manual을 참조하십시오. 이러한 알고리즘을 사용하여, 나는 쉽게 예를 들어,이 작업을 수행 할 수 있습니다

#include "../date_performance/date_algorithms" 
#include <ratio> 
#include <chrono> 
#include <iostream> 

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

typedef std::chrono::time_point<std::chrono::system_clock, days> date_point; 

int 
main() 
{ 
    using namespace std::chrono; 
    date_point datenum{days{days_from_civil(2014, 2, 5)}}; 
    auto d = system_clock::now() - datenum; 
    auto h = duration_cast<hours>(d); 
    d -= h; 
    auto m = duration_cast<minutes>(d); 
    std::cout << "The current UTC time is " << h.count() << ':' << m.count() << '\n'; 
    date_point datenum2{days{days_from_civil(2014, 3, 5)}}; 
    std::cout << "There are " << (datenum2-datenum).count() << " days between 2014-03-05 and 2014-02-05\n"; 
} 

을 나 출력을 위해 어떤 :

The current UTC time is 22:12 
There are 28 days between 2014-03-05 and 2014-02-05 

당신이해야 할 첫 번째 일은이 chrono::duration를 작성하는 일을 나타 내기 위해 명명 위의 days. 그런 다음 days 기간을 기준으로 chrono::time_point을 만드는 것이 편리합니다. 이 time_point은 알려진 모든 구현 인 system_clock::time_point과 호환됩니다. 나는. 당신은 그들을 뺄 수 있습니다.

이 기간 동안 나는 현재 시간에서 now()을 뺀 시간을 계산합니다 :: UTC 시간대로 하루 중 몇 분. 또한 두 날짜 사이의 일 수를 계산하는 방법을 보여줍니다.

이 알고리즘을 자유롭게 사용해도되고,이 모든 것을 유형 안전 날짜 클래스로 감쌀 수도 있습니다. 링크는 실제 날짜 클래스가 아닌 알고리즘 만 제공합니다.

시간이 지나면 나중에이 알고리즘을 기반으로 날짜 클래스를 게시 할 수 있습니다 ...

1

에 부스트 덕분에 존재 알고, 즉 시간 점과 지속 시간을 사용한 산술이지만 부스트가없는 C++ 11의 경우 :

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

int main() { 
    duration<long> one_day{ hours(24) }; 
    system_clock::time_point now = system_clock::now(); 
    system_clock::time_point tomorrow = now + one_day; 
    time_t t = system_clock::to_time_t(tomorrow); 
    cout << "Tomorrow: " << ctime(&t) << '\n'; 
} 

희망이 있습니다.