为什么我的上午/下午时间不是24小时C ++工作时间? (hackerrank prob)

时间:2017-05-14 16:41:31

标签: c++

我一直在研究AM / PM时钟到24小时制,但出于某种原因我陷入困境。我不确定我在做什么假设/错误。我尝试了很多测试用例,似乎无法创建被拒绝的错误代码。

它是hackerrank problem。我知道有解决方案,但我只想知道为什么我的代码不起作用,因为我想了解我做错了什么。

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int main(){
    string time;
    cin >> time;
    string str_hours = time.substr(0,2);
    string str_minutes = time.substr(3,2);
    string str_seconds = time.substr(6,2);
    string period = time.substr(8,2);

    int hours = stoi(str_hours);
    if(period.compare("PM") == 0) {
      hours += 12;
    }
    str_hours = to_string(hours);
    if(hours < 10) {
      str_hours.insert(0,"0");
    }

    cout << str_hours << ":" << str_minutes << ":" << str_seconds;



    return 0;
}

我知道这是我的错,但我只是渴望另一种观点。非常感谢您阅读本文。

1 个答案:

答案 0 :(得分:2)

您的代码存在的问题是它处理边框条件:它将12:15:00PM(中午十五点)转换为无效时间24:15:00

同样的情况发生在午夜12点,午夜,转换后的中午12点。