如何将秒数转换为完整时间戳?求助分析1352364秒转换代码
时间转换代码的输出问题分析
先直接给你答案:你当前的代码运行后会输出:2 Weeks 15 Days 375 Hours 39 Minutes 24 Seconds.
不过这个结果是有问题的——因为15天里已经包含了2周(14天),375小时里也包含了15天(360小时),等于把同一部分时间重复统计了好几次。
问题出在哪?
你的计算逻辑只做了“向下取整转换”,没有做“剩余时间提取”:
hours = (timeToGrow / 60) / 60:这是把所有秒直接转换成了总小时数,没有扣除已经被算成天数的部分days = ((timeToGrow / 60) / 60) / 24:这是总天数,没有扣除已经被算成周数的部分
所以最终输出里,天、小时都是包含更高单位的总数,而不是剩余的时间。
修正后的正确代码
要得到“周、天、小时、分钟、秒”的正确拆分,每一步都需要对更高一级的时间单位取余,来得到当前单位的剩余数量:
int timeToGrow = 1352364; int secs = timeToGrow % 60; int mins = (timeToGrow / 60) % 60; int hours = (timeToGrow / (60 * 60)) % 24; // 总小时数对24取余,得到当天剩余的小时 int days = (timeToGrow / (60 * 60 * 24)) % 7; // 总天数对7取余,得到当周剩余的天数 int weeks = timeToGrow / (60 * 60 * 24 * 7); // 直接计算总周数 System.out.println(weeks + " Weeks "+ days + " Days " + hours + " Hours " + mins + " Minutes " + secs + " Seconds.");
正确输出结果
修正后的代码运行后会输出:2 Weeks 1 Days 15 Hours 39 Minutes 24 Seconds.
我们可以验证一下:2周=14天,加1天是15天;15天=360小时,加15小时是375小时;375小时=22500分钟,加39分钟是22539分钟;22539分钟=1352340秒,加24秒正好是1352364秒,完全匹配原始数值。
内容的提问来源于stack exchange,提问作者J Boonders
相关产品推荐
相关产品推荐

