时间字符串比较大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <sstream>
#include <iomanip>
#include <ctime>
 
bool compareTimeStrings(const std::string& timeStr1, const std::string& timeStr2) {
    std::tm time1 = {};
    std::tm time2 = {};
 
    std::istringstream ss1(timeStr1);
    std::istringstream ss2(timeStr2);
 
    // 根据时间字符串的格式选择合适的格式化字符串
    ss1 >> std::get_time(&time1, "%Y-%m-%d %H:%M:%S");
    ss2 >> std::get_time(&time2, "%Y-%m-%d %H:%M:%S");
 
    // 比较转换后的时间
    if (mktime(&time1) == mktime(&time2)) {
        return true; // 时间相等
    }
    else {
        return mktime(&time1) < mktime(&time2); // 返回第一个时间是否小于第二个时间
    }
}
 
int main() {
    std::string timeStr1 = "2023-12-24 15:46:00";
    std::string timeStr2 = "2023-12-24 10:45:00";
 
    if (compareTimeStrings(timeStr1, timeStr2)) {
        std::cout << timeStr1 << " is earlier than " << timeStr2 << std::endl;
    }
    else {
        std::cout << timeStr1 << " is later than " << timeStr2 << std::endl;
    }
 
    return 0;
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <sstream> // 包含头文件以使用 std::istringstream
#include <string>
 
bool parseTime(const std::string& timeStr, struct tm& timeParts) {
    std::istringstream ss(timeStr);
    char delimiter; // 用于跳过分隔符
 
    // 读取年
    ss >> timeParts.tm_year;
    ss.get(delimiter); // 读取分隔符
 
    // 读取月
    ss >> timeParts.tm_mon;
    ss.get(delimiter); // 读取分隔符
 
    // 读取日
    ss >> timeParts.tm_mday;
    ss.get(delimiter); // 读取分隔符
 
    // 读取小时
    ss >> timeParts.tm_hour;
    ss.get(delimiter); // 读取分隔符
 
    // 读取分钟
    ss >> timeParts.tm_min;
    ss.get(delimiter); // 读取分隔符
 
    // 读取秒
    ss >> timeParts.tm_sec;
 
    // 检查是否成功读取所有部分
    return ss.eof() && !ss.fail();
}
 
int main() {
    std::string timeStr = "2024-12-24 15:30:00";
    struct tm timeParts = {};
 
    if (parseTime(timeStr, timeParts)) {
        std::cout << "Parsed time: "
            << "Year: " << timeParts.tm_year
            << ", Month: " << timeParts.tm_mon
            << ", Day: " << timeParts.tm_mday
            << ", Hour: " << timeParts.tm_hour
            << ", Minute: " << timeParts.tm_min
            << ", Second: " << timeParts.tm_sec << std::endl;
    }
    else {
        std::cout << "Failed to parse time string." << std::endl;
    }
 
    return 0;
}

  

posted @   leochan007  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示