クロノ タイム ポイントからの時間単位の抽出
C では、 std::chrono::time_point オブジェクトから正確な時間単位を抽出するかどうかは、次によって決まります。基礎となるクロックのタイプ。 system_clock は常用カレンダーに接続されており、年、月、日、ミリ秒などのデータにアクセスできます。
現在時刻を表す system_ Clock::time_point を取得するには:
<code class="cpp">std::chrono::system_clock::time_point now = std::chrono::system_clock::now();</code>
C ライブラリを使用して、それを time_t に変換し、次に tm 構造体に変換します。この変換オプションは、UTC またはローカル タイム ゾーンのいずれかにすることができます。
<code class="cpp">std::time_t tt = std::chrono::system_clock::to_time_t(now); std::tm utc_tm = *std::gmtime(&tt); std::tm local_tm = *std::localtime(&tt);</code>
次に、次のように、必要な時間コンポーネントを抽出できます。
<code class="cpp">int year = local_tm.tm_year + 1900; int month = local_tm.tm_mon + 1; int day = local_tm.tm_mday;</code>
さらに、system_ Clock は、多くの場合、ベースになります。 Unix 時間では、小数秒へのアクセスを提供します:
<code class="cpp">int frac_second = std::chrono::system_clock::duration::period::num / std::chrono::system_clock::duration::period::den;</code>
duration_cast およびカスタム期間クラスの曜日を利用して、正確な時間の計算を容易にすることができます:
<code class="cpp">std::chrono::duration<int, std::ratio_multiply<std::chrono::hours::period, std::ratio<24>>> days; std::chrono::days d = std::chrono::duration_cast<std::chrono::days>(tp); tp -= d; std::chrono::hours h = std::chrono::duration_cast<std::chrono::hours>(tp); // ... (continue for minutes, seconds, and fractional seconds)</code>
または、「日付」ライブラリは、簡素化された多用途のアプローチを提供します:
<code class="cpp">#include "date.h" auto tp = std::chrono::system_clock::now(); auto dp = date::floor<date::days>(tp); auto ymd = date::year_month_day{dp}; auto time = date::make_time(std::chrono::duration_cast<std::chrono::milliseconds>(tp-dp)); int year = ymd.year(); int month = ymd.month(); // ... (continue for day, hour, minute, second, millisecond)</code>
以上がC の chrono::time_point から特定の時間単位を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。