c - 如何在C中添加时间?

标签 c

本质上,当时间以军事格式列出时(例如,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/

相关文章:

c++ - 带有插入符号操作的字符 XOR

c - 在套接字库中调用 recv 时,我的 recv 缓冲区应该有多大

c - 在声明的 C 字符串上添加 CRLF

c - 如何解释函数中的十六进制值的说明

c - 通过管道发送 C 命令行参数

c++ - 在 C++ 共享库的 header 中声明 'extern "C"' 有什么影响?

c - 在 C 中分割从文件读取的字符串很困难

在C中复制多个文件

C 递归和内存

c - 链表哈希表给出奇数输出