ホームページ > バックエンド開発 > C++ > C で 2 つの文字列時刻値の間の早い時刻を判断するにはどうすればよいですか?

C で 2 つの文字列時刻値の間の早い時刻を判断するにはどうすればよいですか?

DDD
リリース: 2024-11-29 22:34:10
オリジナル
306 人が閲覧しました

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

文字列時刻から time_t への変換

「hh:mm:ss」形式の時刻を含む文字列を C で time_t に変換するには、次のようにします。

1 つの方法は、C 11 の高度な時刻と日付を利用することです。 による操作機能図書館。次の手順を使用できます。

  • tm struct を定義します。
  • 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);
ログイン後にコピー

最も早い値の時間変数の比較

時間を含む 2 つの文字列を比較するには、次のようにします。対応する 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 で 2 つの文字列時刻値の間の早い時刻を判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート