2015-12-30 6 views
5

を取得し、私は単純にchrono::time_pointを取得し、時間と整数分程度の数の数を抽出のstd ::クロノを使用した例を見つけようとしてきました。クロノを使用して時間と分の現在数:: time_point

私が持っている:

std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); 

が、私はその後、時間と分(午前0時から)を抽出する方法を見つけることができませんか?私のようなものを探しています:

int hours = now.clock.hours(); 

答えて

6

はあなたのためにこれを行います無料、open-source date libraryです。コードの仕組みを正確に知りたい場合は、コードを調べてください。あなたはこのようなUTCタイムゾーンで午前0時から現在の時間と分を得るためにそれを使用することができます:

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

int 
main() 
{ 
    auto now = date::floor<std::chrono::minutes>(std::chrono::system_clock::now()); 
    auto dp = date::floor<date::days>(now); 
    auto time = date::make_time(now - dp); 
    int hours = time.hours().count(); 
    int minutes = time.minutes().count(); 
    std::cout.fill('0'); 
    std::cout << std::setw(2) << hours << ':' << std::setw(2) << minutes << '\n'; 
} 

あなたには、いくつかの他の時間帯に情報が必要な場合は、あなたがこの追加IANA time zone parserが必要になります(または、あなた自身を書くことができますタイムゾーン管理システム)。上記のコードは、ローカルタイムゾーンで午前0時から時間と分を取得するので、同じように変更されます:

#include "date/tz.h" 
#include <iomanip> 
#include <iostream> 

int 
main() 
{ 
    auto zt = date::make_zoned(date::current_zone(), 
           std::chrono::system_clock::now()); 
    auto now = date::floor<std::chrono::minutes>(zt.get_local_time()); 
    auto dp = date::floor<date::days>(now); 
    auto time = date::make_time(now - dp); 
    int hours = time.hours().count(); 
    int minutes = time.minutes().count(); 
    std::cout.fill('0'); 
    std::cout << std::setw(2) << hours << ':' << std::setw(2) << minutes << '\n'; 
} 

これらのライブラリは、ここにgithubの上でご利用いただけます:ここで

https://github.com/HowardHinnant/date

は、ビデオプレゼンテーションです日付ライブラリの:

https://www.youtube.com/watch?v=tzyGjOm8AKo

そして、ここではビデオですpresentatiタイムゾーンのライブラリーの上:本当にしかしME-感謝を悩ますこのような

https://www.youtube.com/watch?v=Vwd3pduVGKY

関連する問題