【发布时间】:2018-04-09 06:17:53
【问题描述】:
我已经为此花费了一个小时,但我无法创建适用于我的 c 程序的公式。 (我有一个新程序员)。
我必须将 UTC 时间转换为特定城市的相应时间。除了这里,我的代码运行良好。在这里它给了我错误的答案。我无法理解它(我创建了一个公式,但它对我来说毫无意义)。
在我的程序中,时间输入为 24 小时制。上午 9 点 = 900,下午 12 点 = 1200,上午 12 点 = 0 等等。
如果我们被要求将 2359 转换为欧克拉时间 (UTC +845),我的程序输出 804。正确答案是 844。 我想出了如何计算 844,但我不明白。
2359 + 845 = 3204 (adding the timezone offset 845 to the UTC time)
3204 - 60 = 3144 (minus 60 for some reason [I followed my time overflow formula]
3144 - 2400 = 2400 (minus 2400 because time cannot be more than 2359)
我的程序是如何工作的
首加UTC和偏移时间
calculatedTime = UTC + offset;
然后在那个下面
if (calculatedTime < 2359) {
calculatedTime = calculatedTime - 2400;
}
我还有另一个函数可以检查下面的溢出时间
if (((calculatedTime > 59) && (calculatedTime < 99)) || ((calculatedTime > 159) && (calculatedTime < 199))) {
// All the way to 2359
calculatedTime = calculatedTime - 60 + 100;
}
【问题讨论】:
-
您不能只决定时间,即以 60 为底,以 100 为底计算。如果现在时间是 23:59,而您等待两分钟,那么是 23:61 吗?要么将其转换为实际分钟数,要么分别计算分钟和小时。
-
@SamiKuhmonen 是的,这就是我不明白的,我如何将它转换为 base 60,同时让我的所有其他代码工作?现在,我的代码运行良好,除了这个特定的时间/偏移量之外,它还能正确转换所有内容。顺便一提。我更新了我的第一篇文章
-
它不是很好,而是适用于非常具体的事情。你知道如何使用模数和除法吗?使用这些分隔小时和分钟。
-
不确定你是否在做作业,但你能使用任何标准的
c time函数吗?可能会帮助explain_time;)
标签: c if-statement time calculator