24小时改成12小时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:

";

cin >> journey_time;

cout << "Please enter your start time:

";

cin >> start_time;

cout << "Please enter your end time:

";

cin >> end_time;

cout << "Please enter the frequency:

";

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 + journey_time<< endl;

}}}

如果我输入旅程时间= 15; START_TIME = 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

啊,这里好像我们有问题。 t中的值不是以分钟为单位的时间,它实际上是两个单独的值:小时和分钟。

有两种方法可以解决这个问题:用户输入输入后,将其分成两个值,并在两个单独的变量中跟踪时间。

解决它的第二种方法,我认为更容易,就是在输入后立即将输入转换为单个值,其单位是午夜后的分钟数。也就是说,如果用户输入930表示上午9:30,则将其转换为值570(这是午夜后的分钟数)。然后只使用该值,根据需要增加和减少,并在将其呈现给用户时仅将其转换回您的首选格式。

为了帮助您来回转换,我建议您使用一些实用程序或辅助函数:一个用于将时间戳转换为午夜过后的分钟,另一个用于将午夜过后的分钟数转换为时间戳。那你就可以轻松做点什么了

cout << minutes_to_time(t) << '' << minutes_to_time(t + journey_time) << '

';

哦,不要忘记在午夜进行测试。两人最终都是t正好是午夜,t + journey_time正午夜,而t在午夜之前有点,t + journey_time在午夜之后。

另一答案

创建单独的功能以将分钟转换为24小时时间格式,反之亦然。

auto get_24hr = [](int minutes){ return (minutes/60)*100 + (minutes%60);};

auto get_minutes = [](int time_24){return (time_24/100)*60+ (time_24 % 100);};

for (int total_min_start= start_time; total_min_start <= end_time; total_min_start +=frequency)

{

auto x = get_minutes(total_min_start); // converted into minutes

cout << get_24hr(x) << "" << get_24hr(x+journey_time) << endl;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值