C++中如何处理时间:实现24小时制时间输入与时间差计算
C++ 24小时制时间输入逻辑实现
核心思路:支持用户输入HH:MM(时:分)格式的时间,也可兼容空格分隔的HH MM格式,输入完成后先做合法性校验再存入变量即可,具体实现步骤如下:
- 第一步:定义存储时间的变量,以及接收分隔符的临时变量
// 可直接用两个int分别存储时、分,也可自行封装时间结构体 int arrive_h, arrive_m, leave_h, leave_m; char sep; // 用于接收时分之间的冒号、空格等分隔符
- 第二步:读取用户输入的时间
cout << "请输入到达时间(24小时制,格式HH:MM):"; cin >> arrive_h >> sep >> arrive_m;
cin会自动忽略分隔符前后的空格,所以用户输入12:30、12 : 30、12 30都能正常读取。
- 第三步:输入合法性校验,避免非法时间值
// 校验到达时间合法性 if (arrive_h < 0 || arrive_h > 23 || arrive_m < 0 || arrive_m > 59) { cout << "输入的到达时间不合法,请输入00:00到23:59之间的时间" << endl; // 可自行添加循环逻辑让用户重新输入,直到输入合法为止 return 1; }
离开时间的输入逻辑和上述逻辑完全一致,替换对应变量名即可。
你也可以把输入逻辑封装为独立函数,简化重复调用的代码:
#include <iostream> using namespace std; bool inputTime(int &hour, int &minute) { char sep; cin >> hour >> sep >> minute; if (hour >=0 && hour <=23 && minute >=0 && minute <=59) { return true; } // 清空输入缓冲区,避免错误输入影响后续读取 cin.clear(); cin.ignore(1024, '\n'); return false; } // 调用示例 int main() { int ah, am, lh, lm; cout << "请输入到达时间(24小时制 HH:MM):"; while (!inputTime(ah, am)) { cout << "时间格式非法,请重新输入到达时间:"; } cout << "请输入离开时间(24小时制 HH:MM):"; while (!inputTime(lh, lm)) { cout << "时间格式非法,请重新输入离开时间:"; } // 此处添加你已实现的时间差计算逻辑即可 cout << "输入的到达时间为:" << ah << "时" << am << "分" << endl; cout << "输入的离开时间为:" << lh << "时" << lm << "分" << endl; return 0; }
如果需要支持用户输入4位纯数字格式的时间(比如1425代表14点25分),可先读取为int类型再拆分:
int time_num; cin >> time_num; int hour = time_num / 100; int minute = time_num % 100; // 后续复用上述的合法性校验逻辑即可
内容的提问来源于stack exchange,提问作者username9599
相关产品推荐
相关产品推荐

