如何实现秒转天时分秒且小时不超24?程序计算异常求助
Fixing the Hour Calculation for Seconds-to-DHMS Conversion
嘿,问题出在你计算小时的那行代码上——你搞混了除法和取模的用法!
让我给你拆解一下核心问题:
- 当你已经把天数对应的秒数从
totalSeconds里扣除后,剩下的秒数要计算小时,应该用除法(/)而不是取模(%)。因为totalSeconds / 3600会得到剩余秒数里包含的完整小时数(最多23,毕竟我们已经先剥离了整天的秒数)。 - 取模
%的作用是计算扣除小时后剩余的秒数,不过你后续的步骤已经在处理这个逻辑了。
修正后的完整代码
int totalSeconds = // 你的输入秒数值 int days = totalSeconds / 86400; totalSeconds -= days * 86400; int hours = totalSeconds / 3600; // 这里把%改成/即可 totalSeconds -= hours * 3600; int minutes = totalSeconds / 60; int seconds = totalSeconds % 60;
验证示例
比如输入90000秒(对应1天1小时):
- 修正前:
hours = 3600 % 3600 = 0(完全不符合预期) - 修正后:
hours = 3600 / 3600 = 1(结果正确)
这样调整后,小时数就永远不会超过24了,因为我们已经提前把完整天数对应的秒数从总输入里剥离出去,剩余的秒数最多只有86399秒(23小时59分59秒)。
内容的提问来源于stack exchange,提问作者Faizan Ahmad




