两个yyyy-MM-dd HH:mm:ss格式的string类型的时间怎么比较大小
时间: 2024-06-17 19:06:17 浏览: 124
C#时间格式化(Datetime)用法详解
5星 · 资源好评率100%
要比较两个 yyyy-MM-dd HH:mm:ss 格式的字符串时间的大小,需要将它们先转换成时间戳(Unix时间戳),然后再进行比较。时间戳表示自 1970 年 1 月 1 日 00:00:00 以来的秒数,可以用于比较两个时间的先后顺序。
在 C++ 中,可以使用 time.h 头文件中的 mktime() 函数将字符串时间转换成时间戳,然后再进行比较。示例代码如下:
```cpp
#include <iostream>
#include <string>
#include <time.h>
using namespace std;
int main() {
string timeStr1 = "2022-08-01 09:30:00";
string timeStr2 = "2022-08-01 10:30:00";
struct tm tm1 = {0};
strptime(timeStr1.c_str(), "%Y-%m-%d %H:%M:%S", &tm1);
time_t time1 = mktime(&tm1);
struct tm tm2 = {0};
strptime(timeStr2.c_str(), "%Y-%m-%d %H:%M:%S", &tm2);
time_t time2 = mktime(&tm2);
if (time1 < time2) {
cout << timeStr1 << " is earlier than " << timeStr2 << endl;
} else if (time1 > time2) {
cout << timeStr1 << " is later than " << timeStr2 << endl;
} else {
cout << timeStr1 << " and " << timeStr2 << " are the same" << endl;
}
return 0;
}
```
上述代码中,使用 strptime() 函数将字符串时间转换成 tm 结构体类型的时间,然后使用 mktime() 函数将其转换成时间戳,最后比较两个时间戳的大小。需要注意的是,strptime() 函数在 Windows 平台上可能不支持,可以使用 Boost 库中的 date_time 模块来代替。
阅读全文