首頁 >後端開發 >C++ >如何確定 C 中兩個字串時間值之間的較早時間?

如何確定 C 中兩個字串時間值之間的較早時間?

DDD
DDD原創
2024-11-29 22:34:10310瀏覽

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

字串時間到time_t 的轉換

在C 中將包含「hh:mm:ss」格式的時間的字串轉換為time_t 可以是透過多種方式實現。

一種方法是利用 C 11 的高級時間和日期操作功能圖書館。您可以使用以下步驟:

  • 定義 tm 結構。
  • 利用 istringstream 讀取時間字串。
  • 使用 get_time 擷取時間分量。
  • 使用建構一個time_t 值mktime.

例如:

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);

比較時間變數的最早值

要比較兩個包含時間的字串,您可以比較它們對應的time_t表示或使用字串比較技術。

使用time_t 值,您可以使用 std::less 直接比較它們。例如:

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;
}

或者,可以使用字串比較,假設兩個時間的格式相同:

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;
}

以上是如何確定 C 中兩個字串時間值之間的較早時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn