首页 > 后端开发 > C++ > 如何确定 C 中两个字符串时间值之间的较早时间?

如何确定 C 中两个字符串时间值之间的较早时间?

DDD
发布: 2024-11-29 22:34:10
原创
306 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板