Heim >Backend-Entwicklung >C++ >Wie bestimme ich die frühere Zeit zwischen zwei String-Zeitwerten in C?

Wie bestimme ich die frühere Zeit zwischen zwei String-Zeitwerten in C?

DDD
DDDOriginal
2024-11-29 22:34:10372Durchsuche

How to Determine the Earlier Time Between Two String Time Values in C  ?

Konvertierung von String Time in time_t

Das Konvertieren eines Strings, der Zeit im Format „hh:mm:ss“ enthält, in time_t in C kann sein Dies kann auf verschiedene Weise erreicht werden.

Eine Methode besteht darin, die erweiterten Zeit- und Datumsmanipulationsfunktionen von C 11 zu nutzen und Bibliotheken. Sie können die folgenden Schritte verwenden:

  • Definieren Sie eine tm-Struktur.
  • Verwenden Sie einen istringstream, um die Zeitzeichenfolge zu lesen.
  • Extrahieren Sie die Zeitkomponenten mit get_time.
  • Konstruieren Sie einen time_t-Wert mit mktime.

Für Beispiel:

std::tm tm;
std::istringstream ss("16:35:12");
ss >> std::get_time(&tm, "%H:%M:%S"); // or just %T in this case
std::time_t time = std::mktime(&tm);

Vergleichen von Zeitvariablen für den frühesten Wert

Um zwei Zeichenfolgen mit Zeit zu vergleichen, können Sie entweder ihre entsprechenden time_t-Darstellungen vergleichen oder Zeichenfolgenvergleichstechniken verwenden.

Anhand von time_t-Werten können Sie diese direkt mit std::less vergleichen. Zum Beispiel:

std::string curr_time = "18:35:21";
std::string user_time = "22:45:31";
std::istringstream ss_curr(curr_time);
std::istringstream ss_user(user_time);
std::tm tm_curr, tm_user;
ss_curr >> std::get_time(&tm_curr, "%H:%M:%S");
ss_user >> std::get_time(&tm_user, "%H:%M:%S");
std::time_t time_curr = std::mktime(&tm_curr);
std::time_t time_user = std::mktime(&tm_user);

if (time_curr < time_user) {
  std::cout << curr_time << " is earlier than " << user_time << std::endl;
} else {
  std::cout << user_time << " is earlier than " << curr_time << std::endl;
}

Alternativ kann ein String-Vergleich verwendet werden, vorausgesetzt, beide Zeiten haben das gleiche Format:

if (curr_time < user_time) {
  std::cout << curr_time << " is earlier than " << user_time << std::endl;
} else {
  std::cout << user_time << " is earlier than " << curr_time << std::endl;
}

Das obige ist der detaillierte Inhalt vonWie bestimme ich die frühere Zeit zwischen zwei String-Zeitwerten in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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