时间字符串比较大小
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; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!