You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:24:06