c++ - 将整数转换为 24 小时格式 C++
问题描述
我正在寻求 C++ 将整数输入转换为 24 小时格式的帮助。假设您为从 A(开始)到 B(结束)的飞机建立了预定时间;用户可以输入 4 个不同的变量,例如飞机从 A 到 B 的行程时间;首飞时间;最后一班飞机时间;以及一天的出行频率。
输入将如下所示:
int journey_time;
int start_time;
int end_time;
int frequency;
cout << "Please enter your journey time:\n";
cin >> journey_time;
cout << "Please enter your start time:\n";
cin >> start_time;
cout << "Please enter your end time: \n";
cin >> end_time;
cout << "Please enter the frequency: \n";
cin >> frequency;
重要的是,用户应该输入整数时间,小时数应该转换为 24 小时制的时间,这就是我卡住的地方;我能够将整数转换为分钟但不能转换为小时
到目前为止我有这个代码
for (int total_min_start= start_time; total_min_start <= end_time; total_min_start +=frequency)
{
hs = total_min_start/100; // to get the hours
ms = total_min_start %100; // to get the minutes
x = (hs *60) + ms; // converted into minutes
h = ((x-ms)/60) * 100; <= this is where I am confused, I want here the reconversion of hours into to 24 hours format
t = h + ms; // this is the total time after reconversion
cout << t << "\t" << t + journey_time<< endl;
}}}
如果我输入旅程时间=15;开始时间=0930;end_time= 1000 和频率 = 15 分钟,我得到以下输出(左)但我想要这个输出(右)
WRONG OUTPUT RIGHT OUTPUT
930 945 930 945
945 960 945 1000
960 1000 1000 1015
我会非常感谢任何帮助或提示......提前致谢
解决方案
好的,让我们展开循环并分别执行每个步骤。
第一次迭代:
// Loop initialization
total_min_start = 930;
hs = 930 / 100; // 9
ms = 930 % 100; // 30
x = (9 * 60) + 30; // 540 + 30 = 570
h = ((570 - 30) / 60) * 100; // (540 / 60) * 100 = 9 * 100 = 900
t = 900 + 30; // 930
// t + journey_time = 930 + 15 = 945
total_min_start += 15; // 945
到目前为止一切顺利,所以我们开始第二次迭代:
total_min_start = 945;
hs = 945 / 100; // 9
ms = 945 % 100; // 45
x = (9 * 60) + 45; // 540 + 45 = 585
h = ((585 - 45) / 60) * 100; // (540 / 60) * 100 = 9 * 100 = 900
t = 900 + 45; // 945
// t + journey_time = 945 + 15 = 960
total_min_start += 15; // 960
啊,看来我们有问题了。in 的值不是t
以分钟为单位的时间,它实际上是两个单独的值:小时和分钟。
有两种方法可以解决这个问题:用户输入输入后,将其分成两个值,并在两个单独的变量中跟踪时间。
解决它的第二种方法,我认为更容易,是在输入后立即将输入转换为单个值,其单位是午夜后的分钟数。也就是说,如果用户输入的930
意思是上午 9:30,您将其转换为值 570(即午夜后的分钟数)。然后仅使用该值,根据需要增加和减少,并且仅在将其呈现给用户时将其转换回您的首选格式。
为了帮助您来回转换,我建议您使用几个实用程序或辅助函数:一个用于将时间戳转换为午夜过后的分钟数,另一个用于将午夜过后的分钟数转换为时间戳。然后你可以轻松地做类似的事情
cout << minutes_to_time(t) << '\t' << minutes_to_time(t + journey_time) << '\n';
哦,别忘了在午夜测试绕行。两者都以t
正好是午夜、t + journey_time
午夜、午夜t
之前和午夜t + journey_time
之后结束。
推荐阅读
- c++ - GLSL Shader 没有渲染任何东西,VAO 被填充,VBO 被顶点填充
- cloudflare - Cloudflare Stream API Webhook 不工作
- javascript - 有没有办法命名同一个案例,但什么时候点击了 2 次?
- c++ - 我的程序在 Windows 机器上崩溃,但在 Linux 上运行良好
- python - Pyspark - 调用 pandas_udf 时出错,结果返回 Series.interpolate()
- python - 基于 x 轴上给出的新间隔的累积总和的阶梯图
- java - 如何在 Reactor 中将 Context 与 flatMap() 一起使用?
- azure - 如何识别 ADO Pipelines 中管道的 AzureDevOps id?
- json - 无法在 JSON 中正确输出数组
- python - 想要将一个地理位置的价值与另一个位置进行比较