【发布时间】:2021-01-23 20:31:54
【问题描述】:
当我在 if 语句中按 1 时显示在 main() 中时,我需要代码方面的帮助。当它应该是 PM 时,它是 AM。我相信它正在从我的 GET12Hour 和 Get24hour 函数中挂断,因为当我将呼叫切换到我的函数时,它工作得很好,但两者都不会输出 24 小时制而不是 12 小时制。我该如何解决。这是我在 C++ 中的第一个项目。请帮忙。
#include <iostream>
#include<ctime>
using namespace std;
void Get24Hour(){
time_t now = time(0);
tm* lt = localtime(&now);
cout << lt->tm_hour << ":";
cout << lt->tm_min << ":";
cout << lt->tm_sec;
return;
}
void Get12Hour(){
time_t now = time(0);
tm* lt = localtime(&now);
string amOrPm;
if(lt->tm_hour > 12){
lt->tm_hour = lt->tm_hour - 12;
amOrPm = "PM";
cout << lt->tm_hour << ":";
}
else{
cout << lt->tm_hour << ":";
amOrPm = "AM";
}
cout << lt->tm_min << ":";
cout << lt->tm_sec << " ";
cout << amOrPm;
return;
}
void DisplayMenu(){
cout << "1- Add One Hour" << endl;
cout << "2- Add One Minute" << endl;
cout << "3- Add One Second" << endl;
cout << "4- Exit Program" << endl;
}
int main()
{
time_t now = time(0);
tm* lt = localtime(&now);
string amOrPm;
int userInput;
cout << "24 hour clock" << endl;
Get24Hour();
cout << endl;
cout << "12 hour clock" << endl;
Get12Hour();
cout << endl;
DisplayMenu();
cin >> userInput;
if(userInput == 1){
lt->tm_hour = lt->tm_hour + 1;
cout << "24 hour clock" << endl;
cout << lt->tm_hour << ":" << lt->tm_min << ":" << lt->tm_sec <<endl;
cout << "12 hour clock" << endl;
if(lt->tm_hour > 12){
lt->tm_hour = lt->tm_hour - 12;
amOrPm = "PM";
cout << lt->tm_hour << ":";
}
else{
cout << lt->tm_hour << ":";
amOrPm = "AM";
}
cout << lt->tm_min << ":";
cout << lt->tm_sec << " ";
cout << amOrPm;
}
else if(userInput == 2){
}
else if (userInput == 3){
}
else if(userInput == 4){
}
return 0;
}
【问题讨论】:
-
您有逻辑错误和输出格式错误。请考虑改用
strftime函数。它默认提供 AM/PM 名称。
标签: c++ if-statement time