Heim > Backend-Entwicklung > C++ > Wie extrahieren Sie bestimmte Zeiteinheiten aus einem chrono::time_point in C?

Wie extrahieren Sie bestimmte Zeiteinheiten aus einem chrono::time_point in C?

Susan Sarandon
Freigeben: 2024-10-30 08:23:02
Original
372 Leute haben es durchsucht

How do you extract specific temporal units from a chrono::time_point in C  ?

Zeiteinheiten aus Chrono-Zeitpunkten extrahieren

In C hängt das Extrahieren präziser Zeiteinheiten aus einem std::chrono::time_point-Objekt davon ab der zugrunde liegende Uhrentyp. Die system_clock, die eine Verbindung zum Zivilkalender hat, ermöglicht den Zugriff auf Daten wie Jahr, Monat, Tag und Millisekunde.

So erhalten Sie einen system_clock::time_point, der die aktuelle Zeit darstellt:

<code class="cpp">std::chrono::system_clock::time_point now = std::chrono::system_clock::now();</code>
Nach dem Login kopieren

Konvertieren Sie es mithilfe der C-Bibliothek in eine time_t- und dann in eine tm-Struktur. Diese Konvertierungsoption kann entweder in UTC oder der lokalen Zeitzone erfolgen:

<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>
Nach dem Login kopieren

Sie können dann die gewünschten zeitlichen Komponenten extrahieren, zum Beispiel:

<code class="cpp">int year = local_tm.tm_year + 1900;
int month = local_tm.tm_mon + 1;
int day = local_tm.tm_mday;</code>
Nach dem Login kopieren

Zusätzlich basiert häufig system_clock auf Unix-Zeit und bietet Zugriff auf Sekundenbruchteile:

<code class="cpp">int frac_second = std::chrono::system_clock::duration::period::num / std::chrono::system_clock::duration::period::den;</code>
Nach dem Login kopieren

Der „duration_cast“ und die benutzerdefinierten Dauerklassentage können verwendet werden, um präzise Zeitberechnungen zu erleichtern:

<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>
Nach dem Login kopieren

Alternativ kann das „Datum“ verwendet werden. Die Bibliothek bietet einen vereinfachten und vielseitigen Ansatz:

<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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie extrahieren Sie bestimmte Zeiteinheiten aus einem chrono::time_point in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage