本质上,当时间以军事格式列出时(例如,2300 等于晚上 11 点),我制作的程序基本上会添加时间,然后添加持续时间(例如,345,3 小时 45 分钟。)
我遇到了一个问题,当您将时间添加到超过午夜的时间时,它会继续添加到午夜之后。因此,例如,如果您将 2 小时 (200) 添加到晚上 11 点 (2300),您将得到 2500 的结果,这对于此目的来说是不合逻辑的。
我需要我的程序做的是达到 2400(午夜),然后重置为 0,但继续添加需要添加的剩余金额。
我一直在努力解决这个问题,但我无法弄清楚如何让它添加将其重置为 0 后剩余的内容。
最佳答案
由于分钟以 60 为模,小时以 24 为模,因此您需要分别处理它们。
有点像
int add_time(int old_time, int addition)
{
/* Calculate minutes */
int total_minutes = (old_time % 100) + (addition % 100);
int new_minutes = total_minutes % 60;
/* Calculate hours, adding in the "carry hour" if it exists */
int additional_hours = addition / 100 + total_minutes / 60;
int new_hours = (old_time / 100 + additional_hours) % 24;
/* Put minutes and hours together */
return new_hours * 100 + new_minutes;
}
关于c - 如何在C中添加时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40360933/