에 C++11
버전의 matlabs datenum
버전이 있습니까?크로노 C++ 11 버전의 matlabs datenum
가 이미 나는이 datenum을 matlabs하지만 여기에 기본적으로 같은 당신이 링크 질문의 허용 대답으로 수행하는 방법이 무엇인지 모른다는이 post
에 C++11
버전의 matlabs datenum
버전이 있습니까?크로노 C++ 11 버전의 matlabs datenum
가 이미 나는이 datenum을 matlabs하지만 여기에 기본적으로 같은 당신이 링크 질문의 허용 대답으로 수행하는 방법이 무엇인지 모른다는이 post
아니요, 없습니다. 그러나 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 시간대로 하루 중 몇 분. 또한 두 날짜 사이의 일 수를 계산하는 방법을 보여줍니다.
이 알고리즘을 자유롭게 사용해도되고,이 모든 것을 유형 안전 날짜 클래스로 감쌀 수도 있습니다. 링크는 실제 날짜 클래스가 아닌 알고리즘 만 제공합니다.
시간이 지나면 나중에이 알고리즘을 기반으로 날짜 클래스를 게시 할 수 있습니다 ...
에 부스트 덕분에 존재 알고, 즉 시간 점과 지속 시간을 사용한 산술이지만 부스트가없는 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';
}
희망이 있습니다.